P.S 20140425
だいぶ手順が雑でしたので見直しました、見栄えも修正しております
またCentOS6系でも試してみましたのでCentOS6系の場合は
こちらをご参照ください
■概要
Ruby on Railsを使って簡単なアプリを作ってみました
scaffold的なサンプルアプリを作成してみました
■バージョン
CentOS 5.10 64bit
Rails 3.2.7
ruby 1.9.3p125
mysql 5.0.95
■事前
■rails基本設定
cd /var/tmp
rails new "simpledbform" -d mysql
cd simpledbform/
vi Gemfile
gem 'therubyracer'
を追記
rake db:create
DB作成に関してはこれで代用
rails server
ブラウザで3000番にアクセスするとRailsのサンプルを表示
http://localhost:3000/
■controller作成
rails generate controller sdfctl
sdfctlは好きなアプリ名を入れてください
emacs config/routes.rb
ここはgenerateしたコントローラの名前を記載します
match 'hello' => 'sdfctl#hello'
match 'bye' => 'sdfctl#bye'
■view設定(controllerとの連携)
touch app/views/sdfctl/hello.html.erb
touch app/views/sdfctl/bye.html.erb
ここで作成するファイル.erbファイルはテンプレートファイルです
テンプレートファイルはコントローラで記載したURLマッピングの名称と同値(必須ではないが)にしておくといいです
emacs app/views/sdfctl/hello.html.erb
<h1>Hello</h1>
こんにちは。お元気ですか。
<%= @msg %>
emacs app/controllers/sdfctl_controller.rb
# coding: utf-8
class SdfctlController < ApplicationController
def hello
#render :text => 'Hello!' ⇒これは直接テキストを表示する命令、未使用なのでコメントアウト
@msg = "おげんきだぜー";
end
def bye
render :text => 'bye!'
end
end
再起動して/helloにアクセスするとテンプレートを表示
■modelとDB連携
rails generate model name
invoke active_record
create db/migrate/20120809010634_create_names.rb
create app/models/name.rb
invoke test_unit
create test/unit/name_test.rb
create test/fixtures/names.yml
emacs db/migrate/20120809010634_create_names.rb
t.string :first_name
t.string :family_name
rake db:migrate
migrateコマンドでテーブルを作成
emacs db/seeds.rb
# coding: utf-8
Names.create(:first_name => 'keke', :family_name => 'kakakiki')
Names.create(:first_name => 'keke2', :family_name => 'kakakiki')
emacs app/models/name.rb
attr_accessible :first_name, :family_name
Can't mass-assign protected attributesのエラーに対応
rake db:seed --trace
この段階でsimpledbform_developmentにレコードがインサートされるので別途mysqlコマンドで確認
rails dbconsoleでも確認可能
emacs app/views/sdfctl/hello.html.erb
<h1>Hello</h1>
こんにちは。お元気ですか
<%= @msg %>
<% @name_all.each do |name| %>
[苗字] <%= name.family_name %>, [名前] <%= name.first_name %>
<% end %>
emacs app/controllers/sdfctl_controller.rb
# coding: utf-8
class SdfctlController < ApplicationController
def hello
@sum = 1 + 1
@msg = "おげんきだぜー";
@name = Name.all
end
def bye
render :text => 'bye!'
end
end
rails server
でこの状態で/helloにアクセスするとDBのデータを取得してその値を取得し表示してくれると思います
以上で簡単なサンプルは完了です
■メモ
public/配下が静的ファイルを置く場所
config/routes.rbがリクエストの振り分けを行う、URLのマッピング
controllerのURLマッピングとviewのhtml.erbファイルは密接に関係
MVCモデルの設定ファイルはapp/models, views, controllersがそれぞれ対応
rubyで2バイト文字を先頭で使うときには# coding: utf-8を記載
railsではデータベースを作成する際にmigrateという機能を使用
(DBに直接コマンドを打つのではなくrails特有のスクリプトからDBを構築する手法)
rails serverは毎回行わなくてもMVCの更新でリアルタイムに反映
rubyの「:」はテキストを表している、「:text」「'test'」「"test"」は同値