感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

RailsでHello Worldしてみる。

<スポンサーリンク>

Railsで新規のアプリケーションを作成する

新規のアプリケーションを作成するのは、rails new [アプリケーション名]というコマンドでOK。

> rails new hogeapili

上記のコマンドによってできたディレクトリを確認すると、以下のようになる。

├─app
│  ├─assets
│  │  ├─images
│  │  ├─javascripts
│  │  └─stylesheets
│  ├─controllers
│  │  └─concerns
│  ├─helpers
│  ├─mailers
│  ├─models
│  │  └─concerns
│  └─views
│      └─layouts
├─bin
├─config
│  ├─environments
│  ├─initializers
│  └─locales
├─db
├─lib
│  ├─assets
│  └─tasks
├─log
├─public
├─test
│  ├─controllers
│  ├─fixtures
│  ├─helpers
│  ├─integration
│  ├─mailers
│  └─models
├─tmp
│  └─cache
│      └─assets
└─vendor
    └─assets
        ├─javascripts
        └─stylesheets

なんか色々とあるが、
/appは、アプリケーションの動作に関連するコードを配置する。
/pulicは、HTTP経由で公開されるフォルダ。

RailsでHTTPサーバを起動する

RailsでHTTPサーバを起動するのは、rails serverというコマンド。

> rails server
(以下メッセージ)
=> Booting WEBrick
=> Rails 4.0.0.rc2 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2013-08-10 16:17:09] INFO  WEBrick 1.3.1
[2013-08-10 16:17:09] INFO  ruby 1.9.3 (2013-05-15) [i386-mingw32]
[2013-08-10 16:17:09] INFO  WEBrick::HTTPServer#start: pid=10176 port=3000

3000番ポートにリクエストを飛ばすと、Webcome aboardという画面が出てくる。

http://localhost:3000

Railsでコントローラクラスを作成

Railsでコントローラクラスを作成するのは、以下のコマンド。

> rails generate controller [name]

rails generateで自動生成したファイルはrails destroyコマンドでまとめて削除することができる。

コントローラには命名規則がある。
コントローラクラスは、先頭大文字、接頭辞はController.
「ApplicationController」とか「HelloController」みたいな。

コントローラクラスのファイル名は、hoge_controller.rbのように、アンダースコアで_controller.rbをつける。
ヘルパーファイル名は_helper.rb
テストスクリプト名は_controller_test.rb
となる。

「\app\controllers」以下に、
hello_controller.rbというファイルを作成。
HTTPリクエストを投げたら、メッセージが出る単純なクラスを作成する。

# coding: utf-8

class HelloController < ApplicationController
	def index
		render :text => 'ち〜っす!世界!'
	end
end

「\config」以下のroutes.rbの末尾に以下のコメントを追記する。

match ':controller(/:action(/:id(.:format)))'

で、

http://localhost:3000/hello/index

とリクエストを飛ばすと、こんなエラーが出た。

`normalize_conditions!': You should not use the `match` method in your router without specifying an HTTP method. (RuntimeError)
If you want to expose your action to both GET and POST, add `via: [:get, :post]` option.
If you want to expose your action to GET, use `get` in the router:

こんなエラーが出た。

これは、「match」はダメだよ、ということなので、「get」、あるいは「post」に変更する。

get ':controller(/:action(/:id(.:format)))'

修正してサーバを再起動し、リクエストを投げると、画面に「ち〜っす!世界!」と出た。

なお、日本語を扱う時は、ファイルの先頭に以下のようなマジックコメントを指定する。

# coding: utf-8

読んだ本

Ruby on Rails 3 アプリケーションプログラミング

Ruby on Rails 3 アプリケーションプログラミング


ところどころ、本のままではうまくいかないところもあるけれど、それを差し引いても素敵な本。
入門の名の通り、細かく解説してくれる。

注)routes.rbのmatchの部分や、インストールのところが、本のままではうまくいかないことがあります。

感謝のプログラミング

今回で感謝のプログラミングは【578時間目】
10000時間まで、あと【9422時間】