モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

HelloWorldを表示するまでに必要な設定および知識 (Rails4)

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2014/06/02
最終更新最終更新
2021/09/07
記事区分記事区分
一般公開

目次

    電子回路の基本を学びながら、Arduinoを活用した実験を発信しています!

    1. Railsをインストール

    事前にインストールしておいたRubyに付属のgemコマンドを利用して、Railsをインストールします。'-v'オプションで特定のバージョンを指定してのインストールが可能です。

    $ gem install rails -v X.X.X
    

    2. アプリケーションを作成

    railsコマンドを使用してアプリケーションの雛形を生成します。

    $ rails new myApp
    

    特定バージョンのrailsを使用して作成するためには

    $ rails _X.X.X_ new myApp
    

    とします。また、既定はsqlite3ですが、例えばmysqlを使用するアプリケーションを作成するためには

    $ rails new myApp --database='mysql'
    

    とします。

    3. テストページを表示

    作成したアプリケーションのディレクトリ内に移動し

    $ cd /path/to/myApp
    

    railsコマンドでサーバーを起動します。

    $ rails server
    (or $ rails s)
    

    オプションを指定しませんでしたので、規定の3000番ポートでテストページ http://localhost:3000/ にアクセスできます。なお、'-p 8080'とするとポートを指定できます。その他のオプションとして、例えば'-e production'とすれば生成されたアプリケーションの設定のうちproductionのものを使用してサーバーが起動します。省略時にはdevelopmentの設定が使用されます。

    4. コントローラを作成

    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

    5. ビューを作成

    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 で編集可能です。

    6. モデルを作成

    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の場合、下記のようなコマンドが実行できます。

    • .tables → テーブル一覧を表示
    • .schema tablename → 指定したテーブルの構造を表示
    • SELECT * FROM tablename → お馴染のSQLクエリ
    • .quit → 終了

    このモデルを使用して簡易表示ページを作成してみましょう。

    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"
    

    のように表示されます。

    7. その他、知っていると便利な知識

    環境ごとの設定ファイル

    • config/application.rb → アプリケーション全体で環境に依存せずに有効な設定を記述可能
    • config/production.rb → production環境でのみ有効な設定を記述可能
    • config/development.rb → development環境でのみ有効な設定を記述可能

    (いずれも、編集したらサーバを再起動する必要あります)

    自分で作成する設定ファイル

    config/my_config.yml

    COMMON: &COMMON  # YAML記法のひとつ。下記のように参照できるようになります
      serviceName: "myApp"
    
    development:
      envName: "development"
      <<: *COMMON
    
    production:
      envName: "production"
      <<: *COMMON
    

    config/initializers/my_config.rb (起動時に読み込まれます)

    # グローバル変数を用意して、アプリケーション全体での設定値を読み込ませます
    MY_APP_GVAR = YAML.load(File.read("#{Rails.root}/config/my_config.yml"))[Rails.env]
    

    コードの中にマークを設定

    app/controllers/main_controller.rb

    ...
    def index
      render text: 'こんにちはー' # printデバッグで便利。
      # TODO: HelloWorld (そういえばまだだったので)
    end
    ...
    

    app/views/main/myView.html.erb

    ...
    <% # TODO: やり残し@ビュー %>
    ...
    

    などとしておけば、

    $ rake notes
    (or $ rake notes | nkf -s)
    

    を実行することで、

    $ rake notes | nkf -s
    app/controllers/main_controller.rb:
      * [7] [TODO] HelloWorld (そういえばまだだったので)
    
    app/views/main/myView.html.erb:
      * [5] [TODO] やり残し@ビュー
    

    と出力できます。

    ビューテンプレートを指定する

    app/controllers/main_controller.rb

    ...
    def index
      render 'main/common'
    end
    ...
    

    とすれば、common.html.erbを強制的にビューテンプレートとして使用させることが可能です。

    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    電子回路の基本を学びながら、Arduinoを活用した実験を発信しています!

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • レイアウトおよび部分テンプレートに関するまとめ (Rails4)
        レイアウトおよび部分テンプレートはどちらもテンプレート (*.html.erb) に共通の要素をまとめておき、任意のテンプレートから利用できるようにしておくための仕組みです。フッターやヘッダーといった大枠はレイアウト、小さなパーツは部分テンプレートというイメージで使い分けましょう。 レイアウトの使用方法 クラス毎に指定する方法と、アクション毎に指定する方法があります。 app/views/layo...
        taro三世taro三世9/21/2016に更新
        いいねアイコン画像0
      • Ruby コードスニペット (正規表現)
        sample.rb str = "001: This is a string." var1,var2 = 2,3 # 'EOS'とすると#{}による変数展開がなされない (%03dは展開される) doc = (<<"EOS" % var1) # 括弧は省略可。要は<<"EOS"の次の行からEOSまで。(参: <<-"EOS"とすると前に空白...
        だいふくうさぎだいふくうさぎ4/13/2018に更新
        いいねアイコン画像0
      • OAuthを用いずにTwitterに自動投稿する (回数制限あり, Selenium with Ruby)
        Seleniumを用いて、OAuthを用いずにTwitterに自動投稿するRubyスクリプトを記述してみます。連続で複数回実行すると、ボット判定としてキャプチャ認証が発生します。その認証までは通過できませんので悪しからず。また、Twitterの仕様変更次第ではDOMの構造が変化するため、下記サンプルは機能しなくなる恐れが有ります。 twitter_post.rb #!/usr/bin/ruby r...
      • Ruby における日本語のエンコーディング
        日本語を含めて多言語対応する際には、Asciiコード以外の文字コードセットが必要になります。日本語が主となる場合、よく使われる文字セットにはUnicode, Shift_JIS, EUC-JPがあります。このうち Unicode だけは特殊であり、世界中のあらゆる文字を収録しようとしていることから 1 文字を表現するために必要なバイト数が大きくなってしまっています。そのため Unicode のうち...
        だいふくうさぎだいふくうさぎ3/21/2017に更新
        いいねアイコン画像0
      • Rails3ビューテンプレートの基本的な使用方法 (Ruby)
        Railsでは、ERB (eRuby (テキストファイルにRubyスクリプトを埋込む書式の仕様) をRubyで実装したもの) を用いてHTML内にRubyスクリプトを埋込むことができます。 <% %> で囲むと出力されません (if-elseなど制御構文を記述します) <%= %> で囲むとエスケープ出力されます <%== %> で囲むとエスケープされずに...