#contents *Prerequisite [#bb767f77] -Ubuntu Server (You can refer [[HowToUse/UbuntuServer/14.04]]) -RVM (You can refer [[HowToUse/RVM/1.25]]) *Install&Setup [#lf764479] :Step.1| Check if the rails has already been installed. $ rails --version :Step.2| If the rails has not been installed yet, execute the following command $ gem install rails *HowToUse [#t9e5e7e8] **Create new application [#w94319d5] :Step.1| Create new application. $ rails new <Application Name> Step.2| Open the Gemfile and append the following lines. $ vi Gemfile gem ‘execjs’ gem ‘therubyracer’ $ bundle install :Step.3| Launch application. $ cd <Application Name> $ rails server :Step.4| Access the following page. http://localhost:3000/ #ref(CreateApplication_fig1.png,,500x266,) When you are setting portforwarding with rails4.2, localhost doesn't work by default. If you want to do port-forwarding, put the following option. $ rails start -b 0.0.0.0 Reference) http://stackoverflow.com/questions/27799260/rails-4-2-server-port-forwarding-on-vagrant-does-not-work **Create sample program with Scaffold [#t1863362] :Step.1| Create objects withs scaffold. $ rails generate scaffold <Object Name> (Example) $ rails generate scaffold TestObject name:string :Step.2| Prepare database. $ rake db:migrate :Step.3| Launch the server and access http://<IP address>:3000/<Object Name> #ref(CreateSample_fig1.png,,500x266,) Now you have a page which maintains data stored in Sqlite DB. **Create Say Hello program [#w1ae1718] :Step.1| Create controller and view files. $ rails generate controller <Controller Name> <Method(View)> <Method(View)> (Example) $ rails generate controller Say hello goodbye :Step.2| Access the following page. http://localhost:3000/say/hello/ #ref(CreateApplication_fig2.png,,500x266,) **Get data from RESTful service [#r4f6bb0b] :Step.1| Edit controller. $ vi app/controller/<Controller file> require 'open-uri' require 'json' res = open('<URL>') code, message = res.status if code == '200' @result = JSON.parse(res.read) end :Step.2| Put it to view file. $ vi app/view/<View file> <table> <% @result.each do |data| %> <tr> <td><%= data['<Key#1>'] %></td> <td><%= data['<Key#2>'] %></td> </tr> <% end %> </table> **Change table structures [#q88124d1] :Step.1| Create migration script $ rails g migration <Migration Script Name> (Example) $ rails g migration AddColumnUsers :Step.2| Edit migration script. $ vi db/migrate/<Migration Script File Name> (Example - change column) $ rails g migration db/migrate/20150927000024_add_column_workorders.rb class AddColumnWorkorders < ActiveRecord::Migration def change add_column :<table name>, :<column name>, :<data type> remove_column :<table name>, :<column name> end end (Example - add foreign key) class AddForeignKeyStatements < ActiveRecord::Migration def change add_foreign_key :<referring table name>, :<referred table name> end end If you set "statements" as referring table, and "calendars" as refered table, then your calendar_id in statements table will be set for foreign_key. (Example - remove foreign key) class RemoveForeignKeyStatements < ActiveRecord::Migration def change remove_foreign_key :<referring table name>, :<referred table name> end end :Step.3| Setup database $ rake db:create $ rake db:migrate :Step.4| Edit index.html.erb $ vi app/views/<table>/index.html.erb :Step.5| Edit _form.html.erb $ vi app/views/<table>/_form.html.erb <%= f.label :<column> %> <%= f.text_field :<column> %> :Step.6| Edit conroller. After Rails is version up to 4.x, we can't use "attr_accessible", so we need to define as below instead. $ vi app/controller/<table name>_controller.rb def create attr = params.require(:<table name>).permit(:<column name>) @<table name> = <table name>.new(attr) **DB Migration [#m6866a5d] (Initilization) $ rake db:migrate (Rollback) $ rake db:rollback (DB Dump) $ rake db:schema:dump (Drop Database) $ rake db:drop (Load Dump file) $ rake db:setup (Reset DB) $ rake db:reset This is equivalent to "rake db:drop" with "rake db:setup". **Testing [#l2ff40b5] :Step.1| Prepare test script. default script) require 'test_helper' class <Class Name>ControllerTest < ActionController::TestCase # test "the truth" do # assert true # end end :Step.2| Prepare test environment. $ rake db:test:prepare :Step.3| Execute test script. $ rake test *Author [#l859f0e7] S.Yatsuzuka