eclipse でRuby o Railsを使う勉強をしようとして、

日経ソフトウエア2007.11の佐藤聖規さんの記事そのままに進めたつもりですが、
(ただし、eclipseやInstantRailsをインストールするときに、C:直下ではなくて、
 D:の中にフォルダを作りました)
途中までは特に問題なくできていると思うのですが、最後のアプリケーション作成で
ジェネレータ・ビューでscaffoldを選択しtodoを実行すると、エラーします。

error Before updating scaffolding from new DB schema, try creating a table for your model (Todo)
localhost:3000 のサーバへの接続を確立できませんでした。

こうした開発の基本的な知識は全くありません。
よろしくアドバイスください。

回答の条件
  • 1人3回まで
  • 登録:2007/10/13 12:41:24
  • 終了:2007/10/20 12:45:03

回答(3件)

id:kent0608 No.1

kent0608回答回数220ベストアンサー獲得回数232007/10/13 18:25:26

ポイント27pt

Scaffoldの対象であるModelに対応するテーブルが作られてなさそうですね。

InstantRailsに付属しているphpMyAdminか何かでテーブルが作られているかどうか確認してください。またdatabase.ymlの設定に間違いはないか、書式は間違っていないかも確認してください。

テーブルが作られていなければ、eclipse(Radrailsでしょうか)のメニューからModelジェネレータを起動してModelを作成ください。

cmdから入力する場合は下記のようになります。

ruby script/generate model todo

db/migrate以下にmigrationファイルが作成されるので、下記のように記述します。(適宜、カラム名を変更してください。)

def self.up
  create_table :todos do |t|
    t.column :foo, :string
    t.column :hoge, :string
  end
end

つぎにrake db:migrateと打ち込んでテーブルを作成します。そのとき、MySQLサーバを起動し忘れないようにしてください。

これでテーブルが作成されるので、あとはScaffoldを実行するだけです。

id:hathi

申し訳ありません。(私にはわかっていないのです)

tableができているか]について

EclipseのRadRailsのRailsナビゲータには、ToDoManagerが表示され、その中にdb\migrate\001_todos.rbと表示されています。

日経ソフトウエアの記事には、テーブル作成が成功すると、「001_todos.rb」というファイルが作成されると書いてあるので、tableはできたのだと思っています。(できていないのでしょうか?)

また、このファイルを編集して、現在は次のコードを記載した状態になっています。

class Todos < ActiveRecord::Migration

def self.up

create_table(:todos) do |table|

table.column(:limit,:timestamp)

table.column(:title,:string)

table.column(:detail,:text)

end

end

def self.down

end

end

日経ソフトウエアの記事では、[次にRakeタスクビューでdb:migradeを選択実行するとtodosテーブルが作成される]と書いてあります。

実行すると、Eclipseのコンソールに<終了>migrate[internal launch]rake(日時)が表示されます。

  kent0608の回答にある『そのとき、MySQLサーバを起動し忘れないように』の意味が私にはわかっていません。

   なお、Eclipseを立ち上げる前に、Instant Railsは立ち上げてあって、画面では、MySQLの右にStartedと表示されています。

   日経ソフトウエアの記事に『常にInstantRailsを起動しておいて』と書かれていたので、Eclpiseを起動している間は常にInstantRailsを起動状態でおいています。


Instant RailsのphpMyAdminを表示させるとテーブルという表記の下にschema_infoと表示されます。テーブルができているのか、何をどう見れば良いのかわかりません。

EclipseのRailsナビゲータのToDoManager\config\environments\database.ymlを見ると、次のようになっていました。

# MySQL (default setup). Versions 4.1 and 5.0 are recommended.

#

# Install the MySQL driver:

# gem install mysql

# On MacOS X:

# gem install mysql -- --include=/usr/local/lib

# On Windows:

# gem install mysql

# Choose the win32 build.

# Install MySQL and put its /bin directory on your path.

#

# And be sure to use new-style password hashing:

# http://dev.mysql.com/doc/refman/5.0/en/old-client.html

development:

adapter: mysql

database: ToDoManager_development

username: root

password:

host: localhost

# Warning: The database defined as 'test' will be erased and

# re-generated from your development database when you run 'rake'.

# Do not set this db to the same as development or production.

test:

adapter: mysql

database: ToDoManager_test

username: root

password:

host: localhost

production:

adapter: mysql

database: ToDoManager_production

username: root

password:

host: localhost

2007/10/13 23:05:30
id:kent0608 No.2

kent0608回答回数220ベストアンサー獲得回数232007/10/14 02:44:36

ポイント27pt

情報を少し整理しますね

InstantRailsは常に起動してあるようなので、MySQLが起動していない等の初歩的な問題ではなさそうですね。

phpMyAdminを起動した後、画面左の選択エリアからToDoManager_developmentを選択しても、schema_infoしか表示されない場合にはテーブルが生成されていません。

正しくテーブルが作成されていればphpMyAdminの左メニューに

ToDoManager_development(2)

■schema_info

■todos

と表示されます。よってtodosテーブルが作成されていません。

これが原因です。RailsはMigrationにてテーブル構造のバージョン管理をしますが、そのMigration用のファイルには特に問題ないようです。

def self.down
  drop_table :todos 
end

あたりが抜けているような気がしますが、大した問題ではないですね。とするとrake db:migrateでテーブルが作成されるはずですが、実際出来ていないので、途中の手順でエラーが発生していると思われます。rake db:migrateの実行時にエラーメッセージは出ていませんか?

 エラーが出ていれば、原因は恐らくToDoManager_developmentというデーターベースを作成する際に名前の綴りを間違えたか、作られていないかどちらかのケースに当てはまると思います。

今一度確認をしてみてください。

id:hathi

ありがとうございます。

まだ内容を追試確認できていないので、回答できません。今夜チェックします。

佐藤様から画像入りで教えていただいたのがあるので、これを確認してみます。

なお、途中まで同じようなのですが、何を間違えたのか、私のは違っているので………

2007/10/16 08:05:58
id:lino No.3

Lino回答回数2ベストアンサー獲得回数02007/10/15 23:26:41

ポイント26pt

id:hathiさん

日経ソフトウェアの記事を書いていた佐藤です。

エラーメッセージとid:kent0608さんのやり取りを見る限り、"todosテーブルが作成できていない"の可能性が高いと思われます。

以下を確認していただいてもいいでしょうか?

-----

1.migrateの方法ですが、以下の画像のように入力しているか確認してください。

f:id:lino:20071015231123j:image:w600

クリックすると最大化します。


成功すると、以下のようなログがコンソールビューに出力されます。

== Todos: migrating ===========================================================
-- create_table(:todos)
   -> 0.0930s
== Todos: migrated (0.0930s) ==================================================

2.続いて、phpMyAdminを起動してください。

正常にデータベースが作成できていれば、左フレームから"ToDoManager_development"が選択できるはずです。

選択すると以下の画面が表示されます。

f:id:lino:20071015231122j:image:w600

クリックすると拡大します。


上の画像の丸で囲まれた部分をクリックすると、作成したテーブルの構造を確認できます。

そこでid,limit,title,detailが表示されるか確認してください。

f:id:lino:20071015231121j:image:w600

クリックすると最大化します。

----

参考までに私がtodoテーブルを作成せずに、scaffoldを実行したときのコンソールログをはりつけます。

      exists  app/controllers/
      exists  app/helpers/
      exists  app/views/todos
      exists  app/views/layouts/
      exists  test/functional/
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
   identical    app/models/todo.rb
   identical    test/unit/todo_test.rb
   identical    test/fixtures/todos.yml
       error  Before updating scaffolding from new DB schema, try creating a table for your model (Todo)
id:hathi

佐藤様 恐縮です。現在の環境が追試できないので、今夜確認してみます。

なお、トップの画像はそのままできていますが、後を記憶していないので、……… (すみません)

2007/10/16 08:17:42
  • id:hathi
    大変に遅くなって済みません。 マシンの問題があり、別のマシンに設定し直してみました。
    この度は、もっと初歩的になってしまったようです。
    ① 条件:全てをCドライブに入れました。
         環境条件の関係で、Aptanaにつなぐため、Eclipseのネットワーク接続を
         手動プロキシー設定にしました。
    ② EclpiseでRailsの新規プロジェクトを作ることはできました。
      Railsナビゲータに表示されています。
    ③ InstantRailsマネジャでDatabase(viaPhpMyadmin)をクリックすると、エラーを起こします。
       http://127.0.0.1/mysql/
       Not Found
       The requested URL /mysql/ was not found on this server.
      となってしまいます。
    ★ なお、InsantRailsは、Apache MySQLとも、Startedです。
      タスクマネジャでみても、Apache
  • id:hathi
      (文章途中で発信してしまいました)
       mysqld も動いています。
      phpMyAdminを起動でない状態になってしまいました。
      環境変数は、現在次のようになっています。
      C:\oracle\ora92\bin;C:\GLOVIA\SH;C:\GLOVIA\BIN;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\PROGRA~1\JUSTSY~1\JSLIB32;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\CASIO\SYSTEM;C:\Program Files\CASIO\APS;C:\Program Files\CASIO\VCOS\AWM;C:\Program Files\CASIO\OCL;C:\Program Files\java\jdk1.5.0_13\bin;C:\InstantRails\mysql\bin


  • id:hathi
    佐藤様
      また、パソコンを変えて、jdkなどすべてを削除し、最初からやってみました。
    ① migrateの方法(Rakeタスクビュー)は、回答に図示していただいた方法をとっていますが、
      その結果は、テーブルはできません。
        rake aborted!
        Don't know how to build task 'todos'
        (See full trace by running task with --trace)
    ② phpMyAdminを起動すると、左フレームでは"ToDoManager_development"が選択されていますが、
      右の画面は:id:lino:20071015231122j:image のようにはなりません。
      テーブルができていないので、その先に進めません。
      (画像の張り方がわからないので、掲示できません)

    なお、今回は、JDKはCドライブですが、他はすべてをDドライブにしました。
      インストール済みのインタープリタは 
         RubyVMは D:\kaihatu\InstantRails\ruby です。
      Railsの構成は
        Railsパス D:\kaihatu\InstantRails\ruby\bin\rails
        Rakeパス  D:\kaihatu\InstantRails\ruby\bin\rake
      環境変数は 現在次のようになっています。
    C:\PROGRA~1\JUSTSY~1\JSLIB32;%SystemRoot%\system32
    ;%SystemRoot%;%SystemRoot%\System32\Wbem
    ;C:\Program Files\Java\jdk1.6.0_03\bin
    ;D:\kaihatu\InstantRails\mysql\bin

      Cドライブには
    C:\Documents and Settings\#####\workspace
    となっていて、
     その中にフォルダが #\workspace\.metadata #\workspace\ToDomanager
      と 2つあります。

    なぜテーブルができないのか、修正指導いただければ幸いです。
      (Rakeの同じので、やっているつもりです)
  • id:lino
    id:hathiさん

    id:hathiさんの問題はToDoテーブルが作成できないことにあるようです。
    ToDoテーブルを作成するのはRakeタスクで実行するdb:migrateというコマンドです。

    以前私が回答した「1.migrateの方法ですが、以下の画像のように入力しているか確認してください。」
    のところですが、modelのじぇねレートと勘違いして入力した画像を張ってしまいました。

    Rakeタスクを実行するには、RadRails上の「Rakeタスク」ビューを以下の画像のように入力して実行してください。

    f:id:lino:20071020200014j:image:w600
    ※ クリックすると拡大します。

    これで実行すると、以下のログが出力されると思います。
    (in D:/checkWorkspace/ToDoManager)
    >|
    == Todos: migrating ===========================================================
    -- create_table(:todos)
    -> 0.1090s
    == Todos: migrated (0.1090s) ==================================================
    |<

    ちなみに、以前の回答のように入力して実行したところ私の環境でも、id:hathiさんと同じログが出力されました。
    >|
    (in D:/checkWorkspace/ToDoManager)
    rake aborted!
    Don't know how to build task 'Todos'

    (See full trace by running task with --trace)
    |<

    間違えた画像を張ってしまい申し訳ございません。

    お時間があれば、確認してみてください。
  • id:lino
    画像のリンクがなぜか切れてしまいました。
    # 質問が終了したためでしょうか?
    申し訳ないですが、以下のURLをブラウザに貼り付けて確認してください。
    http://f.hatena.ne.jp/lino/20071020200014
  • id:hathi
    佐藤様 お手数をおかけし、申し訳ありません。

    次の画像は見えました。
     http://f.hatena.ne.jp/lino/20071020200014

    Rakeタスクを実行するために、RadRails上の「Rakeタスク」ビューを上の画像のように入力・実行しようと
    思います。
     
    実は現在の環境が違います。 上記は、別のマシンでできれば本日確認します。

    現在の環境で再度、全てを削除し、インストールしたつもりですが、この環境だと、
    ToDoManagerのプロジェクト(Railsのスケルトン)はできるのですが、Instantrails⇒I⇒Configure
    ⇒Database(via………)とすると、404Not Found The requested URL /mysql/ was not found on this server.
    となってしまいます。
    JBossに関係するのかと思って、いろいろやったのですが、うまく行きません。


    Eclipseでできるようになったら色々でrubyの勉強を続けたいので、このマシンでも何とか使えるように
    したいと思います。

  • id:hathi
    はてなでお教えくださっている皆様へ

     この質問が時間切れで終了になっています。
       (なぜか書き込みできるようですが)

      とにかく終了では私は困ったままなので、新たに質問を作りました。
       http://q.hatena.ne.jp/1193047497

      上記のところに書きましたが、いったんはとにかく動きました。
      まだよくわからないところがあるので、できれば、次の質問に回答をいただきたいと思います。
      よろしくお願いいたします。
        http://q.hatena.ne.jp/1193047497

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません