事前にインストールしておいたRubyに付属のgemコマンドを利用して、Railsをインストールします。'-v'オプションで特定のバージョンを指定してのインストールが可能です。
$ gem install rails -v X.X.X
railsコマンドを使用してアプリケーションの雛形を生成します。
$ rails new myApp
特定バージョンのrailsを使用して作成するためには
$ rails _X.X.X_ new myApp
とします。また、既定はsqlite3ですが、例えばmysqlを使用するアプリケーションを作成するためには
$ rails new myApp --database='mysql'
とします。
作成したアプリケーションのディレクトリ内に移動し
$ cd /path/to/myApp
railsコマンドでサーバーを起動します。
$ rails server
(or $ rails s)
オプションを指定しませんでしたので、規定の3000番ポートでテストページ (http://localhost:3000/) にアクセスできます。なお、'-p 8080'とするとポートを指定できます。その他のオプションとして、例えば'-e production'とすれば生成されたアプリケーションの設定のうちproductionのものを使用してサーバーが起動します。省略時にはdevelopmentの設定が使用されます。
railsコマンドを使用してコントローラファイルの雛形を自動生成します。
$ rails generate controller main
(or $ rails g controller main)
間違って作成したコントローラのファイル群は
$ rails destroy controller main
とすれば削除できます。コントローラファイルを編集してアクションメソッドを追記しましょう。
app/controllers/main_controller.rb (utf-8で保存してください)
# coding: utf-8
# ↑ruby2.0以降であれば、規定がutf-8であるため省略可能
class MainController < ApplicationController
def index
render text: 'こんにちはー' # printデバッグで便利。View要らずです。
end
end
簡易ルーティング設定を行います。
config/routes.rb
MyApp::Application.routes.draw do
match ':controller(/:action(/:id))', via: [ :get, :post, :patch ]
# match → このパターンにマッチするURLでのアクセスを処理
# () → 省略可能であることを示す
end
アクセスしてみましょう → http://localhost:3000/main/index
app/views/main/myView.html.erb
<div>
<%# 値を返す %>
<%= @val %>
<br />
<%# 処理を実行するだけ %>
<% @val = 256 %>
<%= @val %>
<br />
<%# 値を返す(後方のスペースや改行を除去) %>
<%= @val -%>
<br />
<%# HTMLエスケープしない (XSSに注意) %>
<% str = '&' %>
<%== str %>
<%# XSS対策のサニタイジング (許可したタグと属性以外は取り除く) %>
<% str2 = '<div><p><a id="id" href="url">リンクテキスト</a></p></div>' %>
<%= sanitize str2, tags: %w(a div), attributes: %w(href) %>
<%# デバッグ時に重宝 %>
<%= debug(@val) %>
<!-- その他のコメント方法 -->
<% @val = 512
# これはコメントです
p @val %>
<%
=begin
%>
<% @val = 'これもコメントです' %>
<%
=end
%>
</div>
app/controllers/main_controller.rb
# coding: utf-8
# ↑ruby2.0以降であれば、規定がutf-8であるため省略可能
class MainController < ApplicationController
def index
render text: 'こんにちはー' # printデバッグで便利。View要らずです。
end
def myView
@val = 128
end
end
アクセスしてみましょう → http://localhost:3000/main/myView
静的なページを作成する場合、アクションメソッドが不要であれば省略可能です。
app/views/main/staticView.html.erb
<p>静的なページです。<p/>
アクセスしてみましょう → http://localhost:3000/main/staticView
また、ヘッダおよびフッタなどのレイアウトは app/views/layouts/application.html.erb で編集可能です。
railsコマンドを使用して、モデルファイルの雛形を自動生成しましょう。
$ rails generate model myModel field1:string field2:integer field3:date field4:boolean
(単数形とする。myModelsはダメです)
その後、config/database.ymlに設定のあるデータベースにモデルファイルと同じ構造のテーブルを作成するために、Railsに付属のrakeコマンドを使用して
$ rake db:migrate
を実行しましょう。すると、先程モデルファイルと一緒に生成された db/migrate/20140601095337_create_my_models.rb を利用してデータベースが更新されます (誤って作成した場合などは "rake db:drop" または "rake db:drop:all" で削除できます。誤ってUPDATEなどした場合は "rake db:reset" で初期化できます)。実際に更新されたことを確認するために、クライアントを立ち上げてみましょう。
$ rails dbconsole
(or $ rails db)
SQLite3の場合、下記のようなコマンドが実行できます。
このモデルを使用して簡易表示ページを作成してみましょう。
app/controllers/main_controller.rb
# coding: utf-8
# ↑ruby2.0以降であれば、規定がutf-8であるため省略可能
class MainController < ApplicationController
def index
render text: 'こんにちはー' # printデバッグで便利。View要らずです。
end
def myView
@val = 128
end
def show
@myModels = MyModel.all # SELECT * FROM my_models
end
end
app/views/main/show.html.erb
<% @myModels.each do |myModel| %>
<%= myModel.id %><br />
<% end %>
アクセスしてみましょう → http://localhost:3000/main/show
アクセス時に発行されたSQL文は、rails server を実行したコンソール (コマンドプロンプト等) に
Processing by MainController#show as HTML
MyModel Load (0.0ms) SELECT "my_models".* FROM "my_models"
のように表示されます。