ユーザ用ツール

サイト用ツール


rails

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
rails [2010/02/02 06:48] – 外部編集 127.0.0.1rails [2023/08/26 04:14] (現在) – [Pow] 削除 nullpon
行 4: 行 4:
 Ruby on Rails (rails) はRubyのWebアプリケーションフレームワーク。URLパスをベースとするディスパッチコントローラ、強力なORマッパ、erbによる画面出力をシームレスに接続する。規約を守る事で開発効率を飛躍的に向上させる「設定より規約(Conversion over Configuration)」という思想を普及させた立役者である。 Ruby on Rails (rails) はRubyのWebアプリケーションフレームワーク。URLパスをベースとするディスパッチコントローラ、強力なORマッパ、erbによる画面出力をシームレスに接続する。規約を守る事で開発効率を飛躍的に向上させる「設定より規約(Conversion over Configuration)」という思想を普及させた立役者である。
  
-===== ットアップ ===== + 
-==== Ubuntuの場合 ====+===== railsのコンポーネント ===== 
 +  * [[rails:routing|URLとコントローラの関連付け]] 
 +  * [[rails:active_record|ActiveRecord]] - [[http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?ActiveRecord|Active Recordパターン]]を実装するO/Rマパ。 
 +  * [[rails:action_mailer|ActionMailer]] 
 +  * [[rails:action_controller|ActionController]] 
 +  * [[rails:action_view|ActionView]] 
 +  * [[rails:migration|マイグレーション]] 
 +  * [[rails:plugin|プラグイン]] 
 +  * [[rails:tips|小ネタ]] 
 +  * [[rails:test|テス]] 
 +  * [[rails:i18n|国際化]] 
 +  * [[rails:log|ログ]] 
 + 
 +Ajaxを使う(ちと情報が古いかも) 
 +  * http://wiki.fdiary.net/rails/?AjaxOnRails 
 +  * http://www.thinkit.co.jp/free/article/0605/2/5/ 
 +  * http://jp.rubyist.net/magazine/?0014-RubyOnRails 
 + 
 +===== rake ===== 
 +Rubyで作られたビルドツール(ruby make?)。railsではrakeコマンドでテスト実行、マイグレーション管理などを行う。使用できるタスクをみるには、railsディレクトリで 
 +  $ rake -T 
 + 
 + 
 +===== 開発環境 ===== 
 +  * [[http://www.vim.org/scripts/script.php?script_id=1567|rails.vim]]でrails開発用にvimをパワーアップ 
 +  * [[NetBeans]]にはRuby開発環境が存在する。gemのコントロールもできる。 
 +     * [[http://journal.mycom.co.jp/articles/2008/01/27/rubyonrails/|NetBeansでRuby On Rails開発]] 
 + 
 + 
 +===== 実行環境 ====
 +基本的にpassengerで動作させれば大抵事足りる。外部に公開したいならさくらvps辺りを借りるのが良いだろう。 
 + 
 +  * [[ruby:passenger]] 
 + 
 +手軽に負荷分散を行いたい場合((どーせ高価なロードバランサ買うカネなんてありませんよ!))は、リバースプロキシとしてApacheを置き、mod_proxy_http + mod_proxy_balancerを使ってロードバランシングするのが簡単。バックエンドのアプリケーションサーバはunicornかapache + passenger、nginx + passengerが良いだろう。 
 + 
 +railsの負荷分散する前にボトルネックがどこか調べる。大抵はrailsよりもDBがネックになる。DBが原因なら、DBを別サーバにする。それでもだめならmemcachedにデータをキャッシュ、さらに分散処理を考える。あまり更新されないページについてはキャッシュを使う。 
 + 
 +メモリは十分に乗せよう。rails、passengerはメモリ使用量が大きい。 
 + 
 +Xenなどの仮想環境での運用には十分な慎重さが求められる。仮想環境ではディスク性能が全体のパフォーマンスに非常に大きな影響を与える。なぜならばCPUはマルチコア化で仮想化に対応しているが、ディスクは一つだからだ。IO負荷があまりに大きいとIO waitが跳ね上がってロードアベレージが100を越える事もあり、ホストOSすらも反応しなくなる。I/Oスケジューラの設定が間違っている事もあるので見直そう。 
 + 
 +アプリの負荷分散が必要ならば、nginxをリバースプロキシとしてunicornを並列化すると良い。 
 + 
 +ローカルで動かすならばpassengerのスタンドアローンモードでの実行も良いだろう。 
 + 
 +  * [[http://d.hatena.ne.jp/paulownia/20110920/1316500147|MacOSXローカル環境でRedmineを使う - nullpo.printStackTrace();]] 
 +====== Rails 2 ====== 
 +===== Ubuntuにインストール =====
 以下8.04の場合なので、他バージョンでは微妙に必要パッケージや実行コマンドが異なっているが大筋は同じ 以下8.04の場合なので、他バージョンでは微妙に必要パッケージや実行コマンドが異なっているが大筋は同じ
 <code> <code>
行 33: 行 81:
 </code> </code>
  
-===== railsのコンポーネント ===== +===== アップグレード =====
-  * [[rails:routing|URLとコントローラの関連付け]] +
-  * [[rails:active_record|ActiveRecord]] - [[http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?ActiveRecord|Active Recordパターン]]を実装するO/Rマッパ。 +
-  * [[rails:action_mailer|ActionMailer]] +
-  * [[rails:action_controller|ActionController]] +
-  * [[rails:action_view|ActionView]] +
-  * [[rails:migration|マイグレーション]] +
-  * [[rails:plugin|プラグイン]] +
-  * [[rails:tips|小ネタ]] +
-  * [[rails:test|テスト]] +
-  * [[rails:i18n|国際化]] +
-  * [[rails:log|ログ]] +
- +
-Ajaxを使う(ちと情報が古いかも) +
-  * http://wiki.fdiary.net/rails/?AjaxOnRails +
-  * http://www.thinkit.co.jp/free/article/0605/2/5/ +
-  * http://jp.rubyist.net/magazine/?0014-RubyOnRails +
-===== rake ===== +
-Rubyで作られたビルドツール(ruby make?)。railsではrakeコマンドでテスト実行、マイグレーション管理などを行う。使用できるタスクをみるには、railsディレクトリで +
-  $ rake -T +
- +
-==== アップグレード ====+
 Railsのバージョンを上げたい。まず、 config/environment.rb の RAILS_GEM_VERSION を修正。その後 Railsのバージョンを上げたい。まず、 config/environment.rb の RAILS_GEM_VERSION を修正。その後
   $ rake rails:update   $ rake rails:update
  
-===== script/generate =====+===== 自動生成 =====
 railsの各種アプリケーションモジュールはスクリプトで生成する。 railsの各種アプリケーションモジュールはスクリプトで生成する。
  
行 89: 行 116:
   script/destroy model item   script/destroy model item
  
-===== 開発環境 ===== +====== Rails 3 ====== 
-  * [[http://www.vim.org/scripts/script.php?script_id=1567|rails.vim]]でrails開発用にvimをパワーアップ +Ruby on Rails 3する情報
-  * [[NetBeans]]はRuby開発環境が存在する。gemのコントロールもできる。 +
-     * [[http://journal.mycom.co.jp/articles/2008/01/27/rubyonrails/|NetBeansでRuby On Rails開発]]+
  
-===== アプリケーショ実行環境の構築例 ===== +===== ストール ===== 
-基本的にpassengerで動作させれば大抵事足りる。+  * ruby 1.8.7 以降、あるいは ruby 1.9.2 以降をインストールする。 
 +  * rubygemsをインストールする。
  
-  * [[ruby:passenger|Passenger(mod_rails)]]+Railsとbundlerをインストールする。 
 +  $ gem install rails  
 +  $ gem install bundler
  
-手軽に負荷分散を行いたい場合((どーせ高価なロードバランサ買うカネなんてありませんよ!))、リバースプロキシとしてApacheを置、mod_proxy_balancerを使ってロードバランシングす。バックエンドのrailsの実行環境はmongrelかapache + passengerが良いだろう+他の依存gembundlerで一括してインストールできるので、railsとbundlerみをインストール
  
-railsの負荷分散する前にボトルネックがどこか調べる。大抵はrailsよりもDBがネックになる。DBが原因なら、DBを別サバにする。それでもだめならmemcachedにデータをキャッュ、さらに分散処理を考える。あまり更されなページについてはキャッシュを使う。+===== アプリケーション作成 ===== 
 +railsアプリの作成 
 +  $ rails new application_name
  
-メモリは十分に乗せよう。rails、passengerはメモリ使用量が大きい。+データベースの種類を指定 
 +  $ rails new application_name -d mysql
  
-Xen仮想環境で運用には十分な慎重さが求められる。仮想環境ではディスク性能が全体のパフォーマンスに非常に大きな影響を与える。なぜらばCPUはマルチコア化で仮想化に対応しているがディスクは一つだからだ。IO負荷があまりに大きいIO waitが跳ね上がってロードアジが100越える事もあり、ホストOSすらも反応しなくなる。I/Oスケジューの設定が間違ってる事もあるので見直そ+JavaScriptライブラリを入れい(標準prototype.jsベースライブラリではな[[http://github.com/rails/jquery-ujs|jquery-ujs]]いう[[#jQuery-railsを使う|jQueryベースのライブラリ使いたい場合]]) 
 +  $ rails new application_name -d mysql -J 
 +   
 +ストライブラリを入れな([[#RSpec-railsを使|RSpecを使いたい場合]]) 
 +  $ rails new application_name -d mysql -T
  
 +==== データベース作成 ====
 +config/database.yamlにデータベースの設定を記述(DB作成のため、最初はユーザ名をrootしておく)
  
 +DBを作成(test と developmentのDBが作成される)
 +  $ rake db:create
  
 +全部作る場合
 +  $ rake db:create:all
 +  
 +productionだけ作る場合
 +  $ rake db:create RAILS_ENV=production
 +
 +==== RSpec-railsを使う ====
 +Rails3でRSpecを使うには、rspec-rails v2 以降が必要。現時点(2010/09/24)では、v2系列の正式リリース版は無い
 +
 +[[#Gemの管理|Gemfile]]に以下の記述を追加。
 +  gem 'rspec-rails', '>=2.0.0.beta'
 +
 +インストール
 +  $ bundle install
 +  $ rails generate rspec:install
 +
 +
 +==== jQuery-railsを使う ====
 +:!: Rails 3.1ではjQuery-railsがデフォルトのため、以下の作業は不要である。
 +
 +[[#Gemの管理|Gemfile]]に以下の記述を追加
 +
 +  gem 'jquery-rails'
 +  
 +インストール
 +  $ bundle install
 +  $ rails generate jquery:install
 +
 +
 +HTMLで読み込ませる(app/views/layout/application.html.erb の例)
 +<code ruby>
 +<!DOCTYPE html>
 +<html>
 +<head>
 +  <title>Taskcard</title>
 +  <%= stylesheet_link_tag :all %>
 +  <%= javascript_include_tag :defaults %>
 +  <%= javascript_include_tag "jquery.min" %>
 +  <%= javascript_include_tag "rails" %>
 +  <%= csrf_meta_tag %>
 +</head>
 +<body>
 +<%= yield %>
 +
 +</body>
 +</html>
 +
 +</code>
 +rails.jsを読み込んでいないとresourcesでPUTやDELETEを実行できないので注意
 +
 +==== 自動生成 ====
 +
 +Scaffold
 +  $ rails generate scaffold model_name name:string title:string description:text 
 +
 +Model
 +  $ rails generate model model_name name:string title:string description:text 
 +
 +Controller
 +  $ rails generate controller controller_name [action_name [action_name ... ]]  
 +
 +作成したものを破棄
 +  $ rails destroy scaffold model_name
 +  $ rails destroy model controller_name
 +  $ rails destroy controller controller_name
 +
 +==== 開発用サーバ起動 ====
 +  $ rails server
 +  $ script/rails server
 +
 +railsコマンドは script/rails を呼んでいるだけ
 +
 +===== railsコマンド =====
 +ヘルプ
 +  $ rails help
 +
 +サブコマンドのヘルプ
 +  $ rails server -h
 +  
 +
 +===== Gemの管理 =====
 +Rails3でライブラリを管理する場合、gemコマンドを直接叩くのではなく、bundlerというgemラッパーライブラリを使ったgem管理が推奨されている。
 +
 +例えばデータベースにmysqlを指定してrailsアプリを作成した場合、mysql2というgemが必要になる。もしmysql2が入ってなければ
 +
 +  $ bundle install 
 +  
 +とするとmysql2のgemがインストールされる。
 +
 +bundleコマンドで管理されるライブラリはGemfileというファイルに記述されている。データベースにmysqlを指定してrailsアプリを作成すると、Gemfileにあらかじめmysql2が記述されているので bundle install で自動的にmysql2がインストールされるという作りになっている。
 +
 +<code ruby>
 +gem 'rails', '3.0.0'
 +  
 +# Bundle edge Rails instead:
 +# gem 'rails', :git => 'git://github.com/rails/rails.git'
 +   
 +gem 'mysql2'
 +
 +# rubyist-aasmはgithubのリポジトリにあるのでsourceで指定する。
 +# またGemの名前とモジュール名が異なっているのでrequireする名前を指定する。
 +gem 'rubyist-aasm', '2.1.1', :require => 'aasm'
 +
 +# production環境では使わない(このオプションは廃止された、groupで指示する)
 +gem 'ruby-debug', :except => 'production'
 +
 +# development環境で使う
 +group :development do
 +  gem 'ruby-debug'
 +end
 +
 +</code>
 +
 +aasmはrubygems.orgにはなく、gems.github.comにあるので、sourceに追加する。
 +<code ruby>
 +source 'http://rubygems.org'
 +source 'http://gems.github.com'
 +</code>
 +
 +sourceを指定せずにgitリポジトリを指定して直接取得できる。gemで公開されていないforkや最新版も取得できる。
 +<code ruby>
 +gem 'rubyist-aasm', '2.1.1', :require => 'aasm', :git => "git://github.com/rubyist/aasm.git"
 +</code>
 +
 +==== bundleでのgemインストール先 ====
 +[[http://gembundler.com/bundle_install.html|Bundler: The best way to manage Ruby applications]]
 +
 +  $ bundle install 
 +
 +ふつーにgemを使ったときと同じ場所にインストールされる。rootパスワードを聞かれる。MacOSXでは自分のパスワードで良いようだ。
 +
 +  $ bundle install vendor/bundle
 +  
 +とするとインストールディレクトリを指定できる。
 +
 +なお、一度vendor/bundleにinstallすると.bundle/configというファイルに記録されるので、以降は指定する必要がないらしい。railsを起動する時も、このパスを見に行くようだ。
 +
 +<code>
 +---
 +BUNDLE_DISABLE_SHARED_GEMS: "1"
 +BUNDLE_PATH: vendor/bundle                                 
 +</code>
  
 +インストール先を見るには
 +  $ bundle show rubyist-aasm
  
rails.1265093328.txt.gz · 最終更新: 2011/04/20 01:21 (外部編集)