railsコマンドで作ったアプリケーション(myFirstという名前で作ってみた)をWebサーバで動かしてみたいと思います。
もうすでに、rails myFirstコマンドでmyFirstというアプリケーションがつくってあるので、まずコマンドプロンプトで、Webサーバを動かしてみましょうっと。
# cd myFirst
# script/server
すると、WEBrickというWebサーバが立ち上がりました。しかもプロンプトはWebサーバのログをはき出すためのバッファリング状態で、これ以上コマンドを受け付けてくれなさそうです。この状態でctrl+cを押すと、WEBサーバが停止するんだって。
仕方なく、別のターミナルを開いて、新たにコマンドプロンプトを入力できるようにしました。
それとは別に、Webブラウザから、3000ポートでこのマシンにアクセスすると、Railsの最初の画面が表示されています。
http://localhost:3000/
これから何をしなければならないか、番号が振って書いてありますね。
1.自分用のDBを作ってconfig/database.ymlを編集する
2.script/generateコマンドを使ってモデルとコントローラを作る
3.このファイルを消すか、ファイル名を変えるかして、デフォルトルートをconfig/routes.rbファイルで設定する
あぁ、前途多難だなあ、うまくいくでしょうか。
まずは、1番
1.自分用のDBを作ってconfig/database.ymlを編集する
早速config/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: myFirst_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: myFirst_test
username: root
password:
host: localhost
production:
adapter: mysql
database: myFirst_production
username: root
password:
host: localhost
なんだか、なにもいじらなくてもうまくいくかもしれないなあ。次の手順に進んでみるか。
2.script/generateコマンドを使ってモデルとコントローラを作る
これ、なんのこっちゃ分からないので、ヘルプをみてみよう
# script/generate
ふむふむ、全然分からない。えーいやけっぱちです!
# script/generate controller MyCon
exists app/controllers/
exists app/helpers/
create app/views/my_con
exists test/functional/
create app/controllers/my_con_controller.rb
create test/functional/my_con_controller_test.rb
create app/helpers/my_con_helper.rb
何かが出来ました!
3.このファイルを消すか、ファイル名を変えるかして、デフォルトルートをconfig/routes.rbファイルで設定する
config/routes.rbの中をのぞくと、public/index.htmlを消しとけ!ということなので、消しました。
そしてもう一度http://localhost:3000/にアクセスすると、ヤッター!さっきとは違うメッセージ
Routing Error
no route found to match "/" with {:method=>:get}
が表示されました。まあ、エラーが表示されているんですけどね。
ここまできて、さっき作ったコントロールMyConにアクセスできないかなー、と思いました。
http://localhost:3000/MyCon/
にアクセスするとRouting Errorが・・・がっかり
http://localhost:3000/my_con/
Unknown action
No action responded to index
とOh Yes!どうやらWebサーバにアクセスできたようです。エラーだけど・・
とりあえずこれで第一段階クリアかな(?)次回は、DBも絡めてアプリを作ってみたいなあ。
【広告】
いきなりで大変申し訳ないのですが・・・
validates_presence_of を使って画面の一部のフィールドの入力チェックをしようとしてエラーが発生した場合、
fiel_fieldでファイルのアップロードをするフィールド(入力チェックはしない)だけが
エラー画面で値が消えてしまうのですが
これはもうどうしようもないことなのでしょうか・・・?
file_fieldの値を残したままエラーメッセージを出すことは可能ですか?