rails
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| rails [2010/02/02 06:48] – 外部編集 127.0.0.1 | rails [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: | ||
| + | * [[rails: | ||
| + | * [[rails: | ||
| + | * [[rails: | ||
| + | * [[rails: | ||
| + | * [[rails: | ||
| + | * [[rails: | ||
| + | * [[rails: | ||
| + | * [[rails: | ||
| + | * [[rails: | ||
| + | * [[rails: | ||
| + | |||
| + | Ajaxを使う(ちと情報が古いかも) | ||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||
| + | |||
| + | ===== rake ===== | ||
| + | Rubyで作られたビルドツール(ruby make? | ||
| + | $ rake -T | ||
| + | |||
| + | |||
| + | ===== 開発環境 ===== | ||
| + | * [[http:// | ||
| + | * [[NetBeans]]にはRuby開発環境が存在する。gemのコントロールもできる。 | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== 実行環境 | ||
| + | 基本的にpassengerで動作させれば大抵事足りる。外部に公開したいならさくらのvps辺りを借りるのが良いだろう。 | ||
| + | |||
| + | * [[ruby: | ||
| + | |||
| + | 手軽に負荷分散を行いたい場合((どーせ高価なロードバランサ買うカネなんてありませんよ!))は、リバースプロキシとして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/ | ||
| + | |||
| + | アプリの負荷分散が必要ならば、nginxをリバースプロキシとしてunicornを並列化すると良い。 | ||
| + | |||
| + | ローカルで動かすならばpassengerのスタンドアローンモードでの実行も良いだろう。 | ||
| + | |||
| + | * [[http:// | ||
| + | ====== Rails 2 ====== | ||
| + | ===== Ubuntuにインストール ===== | ||
| 以下8.04の場合なので、他バージョンでは微妙に必要パッケージや実行コマンドが異なっているが大筋は同じ | 以下8.04の場合なので、他バージョンでは微妙に必要パッケージや実行コマンドが異なっているが大筋は同じ | ||
| < | < | ||
| 行 33: | 行 81: | ||
| </ | </ | ||
| - | ===== railsのコンポーネント ===== | + | ===== アップグレード |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | * [[rails: | + | |
| - | + | ||
| - | Ajaxを使う(ちと情報が古いかも) | + | |
| - | * http:// | + | |
| - | * http:// | + | |
| - | * http:// | + | |
| - | ===== rake ===== | + | |
| - | Rubyで作られたビルドツール(ruby make? | + | |
| - | $ rake -T | + | |
| - | + | ||
| - | ==== アップグレード ==== | + | |
| Railsのバージョンを上げたい。まず、 config/ | Railsのバージョンを上げたい。まず、 config/ | ||
| $ rake rails: | $ rake rails: | ||
| - | ===== script/ | + | ===== 自動生成 |
| railsの各種アプリケーションモジュールはスクリプトで生成する。 | railsの各種アプリケーションモジュールはスクリプトで生成する。 | ||
| 行 89: | 行 116: | ||
| script/ | script/ | ||
| - | ===== 開発環境 | + | ====== Rails 3 ====== |
| - | * [[http:// | + | Ruby on Rails 3に関する情報 |
| - | * [[NetBeans]]にはRuby開発環境が存在する。gemのコントロールもできる。 | + | |
| - | * [[http:// | + | |
| - | ===== アプリケーション実行環境の構築例 | + | ===== インストール |
| - | 基本的にpassengerで動作させれば大抵事足りる。 | + | * ruby 1.8.7 以降、あるいは ruby 1.9.2 以降をインストールする。 |
| + | * rubygemsをインストールする。 | ||
| - | * [[ruby: | + | Railsとbundlerをインストールする。 |
| + | $ gem install rails | ||
| + | $ gem install bundler | ||
| - | 手軽に負荷分散を行いたい場合((どーせ高価なロードバランサ買うカネなんてありませんよ!))は、リバースプロキシとしてApacheを置き、mod_proxy_balancerを使ってロードバランシングする。バックエンドのrailsの実行環境はmongrelかapache + passengerが良いだろう。 | + | 他の依存gemはbundlerで一括してインストールできるので、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/ | + | JavaScriptライブラリを入れない(標準のprototype.jsベースのライブラリではなく、[[http:// |
| + | $ rails new application_name -d mysql -J | ||
| + | |||
| + | テストライブラリを入れない([[# | ||
| + | $ rails new application_name -d mysql -T | ||
| + | ==== データベース作成 ==== | ||
| + | config/ | ||
| + | DBを作成(test と developmentのDBが作成される) | ||
| + | $ rake db:create | ||
| + | 全部作る場合 | ||
| + | $ rake db: | ||
| + | | ||
| + | productionだけ作る場合 | ||
| + | $ rake db:create RAILS_ENV=production | ||
| + | |||
| + | ==== RSpec-railsを使う ==== | ||
| + | Rails3でRSpecを使うには、rspec-rails v2 以降が必要。現時点(2010/ | ||
| + | |||
| + | [[# | ||
| + | gem ' | ||
| + | |||
| + | インストール | ||
| + | $ bundle install | ||
| + | $ rails generate rspec: | ||
| + | |||
| + | |||
| + | ==== jQuery-railsを使う ==== | ||
| + | :!: Rails 3.1ではjQuery-railsがデフォルトのため、以下の作業は不要である。 | ||
| + | |||
| + | [[# | ||
| + | |||
| + | gem ' | ||
| + | | ||
| + | インストール | ||
| + | $ bundle install | ||
| + | $ rails generate jquery: | ||
| + | |||
| + | |||
| + | HTMLで読み込ませる(app/ | ||
| + | <code ruby> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <%= stylesheet_link_tag :all %> | ||
| + | <%= javascript_include_tag :defaults %> | ||
| + | <%= javascript_include_tag " | ||
| + | <%= javascript_include_tag " | ||
| + | <%= csrf_meta_tag %> | ||
| + | </ | ||
| + | < | ||
| + | <%= yield %> | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | rails.jsを読み込んでいないとresourcesでPUTやDELETEを実行できないので注意 | ||
| + | |||
| + | ==== 自動生成 ==== | ||
| + | |||
| + | Scaffold | ||
| + | $ rails generate scaffold model_name name:string title: | ||
| + | |||
| + | Model | ||
| + | $ rails generate model model_name name:string title: | ||
| + | |||
| + | 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コマンドは script/ | ||
| + | |||
| + | ===== 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 ' | ||
| + | | ||
| + | # Bundle edge Rails instead: | ||
| + | # gem ' | ||
| + | |||
| + | gem ' | ||
| + | |||
| + | # rubyist-aasmはgithubのリポジトリにあるのでsourceで指定する。 | ||
| + | # またGemの名前とモジュール名が異なっているのでrequireする名前を指定する。 | ||
| + | gem ' | ||
| + | |||
| + | # production環境では使わない(このオプションは廃止された、groupで指示する) | ||
| + | gem ' | ||
| + | |||
| + | # development環境で使う | ||
| + | group : | ||
| + | gem ' | ||
| + | end | ||
| + | |||
| + | </ | ||
| + | |||
| + | aasmはrubygems.orgにはなく、gems.github.comにあるので、sourceに追加する。 | ||
| + | <code ruby> | ||
| + | source ' | ||
| + | source ' | ||
| + | </ | ||
| + | |||
| + | sourceを指定せずにgitリポジトリを指定して直接取得できる。gemで公開されていないforkや最新版も取得できる。 | ||
| + | <code ruby> | ||
| + | gem ' | ||
| + | </ | ||
| + | |||
| + | ==== bundleでのgemインストール先 ==== | ||
| + | [[http:// | ||
| + | |||
| + | $ bundle install | ||
| + | |||
| + | ふつーにgemを使ったときと同じ場所にインストールされる。rootパスワードを聞かれる。MacOSXでは自分のパスワードで良いようだ。 | ||
| + | |||
| + | $ bundle install vendor/ | ||
| + | | ||
| + | とするとインストールディレクトリを指定できる。 | ||
| + | |||
| + | なお、一度vendor/ | ||
| + | |||
| + | < | ||
| + | --- | ||
| + | BUNDLE_DISABLE_SHARED_GEMS: | ||
| + | BUNDLE_PATH: | ||
| + | </ | ||
| + | インストール先を見るには | ||
| + | $ bundle show rubyist-aasm | ||
rails.1265093328.txt.gz · 最終更新: (外部編集)