Memo/Ruby/Rails

http://dexlab.net/pukiwiki/index.php?Memo%2FRuby%2FRails
 

Ruby on Rails


Rails3.1 以降でHTTPSを使う

  • Rails3.1以降でHTTPからHTTPSへリダイレクトさせる
  • サイト全体でSSLを強制
    1. vi config/environments/production.rb
    2. ----
    3. config.force_ssl = true
    4. ----
  • 特定のコントローラだけSSLを強制
    1. vi config/application.rb
    2. ----
    3. module MyApp
    4.   class Application < Rails::Application
    5.     config.force_ssl = true
    6.   end
    7. end
    8. ----

ActiveRecord?

セキュリティ


Hello World

  • CentOS5.8 x86_64, ruby-1.9.3-p194, rubygems-1.8.24, Rails 3.2.2
  1. プロジェクト作成
    1. sudo gem install sqlite3 execjs therubyracer
    2.  
    3. #デフォルトはsqlite3。それ以外は「rails new hello -d mysql」など
    4. rails new hello
    5.  
    6. Enter your password to install the bundled RubyGems to your system: ログインユーザのパスワードを入れる。足りないgemをインストールされる
  2. エラー「/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript? runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable?)」
    • JavaScript?ライブラリをインストールすると解決する模様
      1. vi Gemfile # アプリケーションのルート直下にあるGemfileを編集
      2. ----
      3. gem 'execjs'
      4. gem 'therubyracer'
      5. ----
      6. bundle install
  3. デモアプリ用に準備
    1. cd hello
    2.  
    3. # Postという名前のモデル、ビュー、コントローラーを作成
    4. rails generate scaffold Post name:string title:string content:text
    5.  
    6. # DBを作成
    7. rake db:create
    8.  
    9. # テーブルを作成
    10. rake db:migrate
    11.  
    12. # 現在のルーティングを確認
    13. rake routes
    14.     posts GET    /posts(.:format)          posts#index
    15.           POST   /posts(.:format)          posts#create
    16.  new_post GET    /posts/new(.:format)      posts#new
    17. edit_post GET    /posts/:id/edit(.:format) posts#edit
    18.      post GET    /posts/:id(.:format)      posts#show
    19.           PUT    /posts/:id(.:format)      posts#update
    20.           DELETE /posts/:id(.:format)      posts#destroy
  4. 開発用WEBサーバ(WEBrick)を起動。TCP:3000ポート
    • iptables等でフィルタしている場合は開けておく
      1. sudo vi /etc/sysconfig/iptables
      2. ----
      3. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3000  -j ACCEPT
      4. ----
      5. service iptables reload
    • 起動
      1. cd hello
      2. rails server
      3.  
      4. #中止はCtrl+C
  5. ブラウザで http://192.168.1.x:3000/ を開く
  6. 「About your application’s environment」リンクをクリックすると環境がわかる
  7. 追加したpostsコントローラを見てみる
  8. ブラウザで http://192.168.1.x:3000/posts を開く
  9. Listing postsから追加、編集、削除等々が出来ることを確認
  10. topページのコントローラをpostsコントローラに変更してみる
    1. # indexページを削除
    2. rm public/index.html
    3.  
    4. vi config/routes.rb
    5. ----
    6. Hello::Application.routes.draw do
    7.   resources :posts
    8.  
    9.   root :to => "posts#index"
    10. end
    11. ----
    1. rails server
  11. ブラウザで http://192.168.1.x:3000/ を開いて見る。postsコントローラが表示されれば成功

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-11-22 (木) 11:50:05 (2041d)