Hello World from OSS Silicon Valley


HowToUse/RubyOnRails/4.1

_ Prerequisite

_ Install&Setup

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

_ Create new application

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/
CreateApplication_fig1.png

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

http://stackoverflow.com/questions/27799260/rails-4-2-server-port-forwarding-on-vagrant-does-not-work

_ Create sample program with Scaffold

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>
CreateSample_fig1.png

Now you have a page which maintains data stored in Sqlite DB.

_ Create Say Hello program

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(): File not found: "CreateApplication_fig2.png" at page "HowToUse/RubyOnRails/4.1"

_ Get data from RESTful service

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

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

(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

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

S.Yatsuzuka

 
Attach file: fileCreateSample_fig1.png 152 download [Information] fileHeroku_fig1.png 140 download [Information] fileCreateApplication_fig1.png 233 download [Information]
Last-modified: 2016-11-06 (Sun) 07:51:25 (2725d)