内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
rails
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Ruby on Rails ====== * [[http://www.rubyonrails.org/|Ruby On Rails]] * [[http://api.rubyonrails.org/|Rails Framework Documentation]] Ruby on Rails (rails) はRubyのWebアプリケーションフレームワーク。URLパスをベースとするディスパッチコントローラ、強力なORマッパ、erbによる画面出力をシームレスに接続する。規約を守る事で開発効率を飛躍的に向上させる「設定より規約(Conversion over Configuration)」という思想を普及させた立役者である。 ===== 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の場合なので、他バージョンでは微妙に必要パッケージや実行コマンドが異なっているが大筋は同じ <code> # とりあえず最新に sudo aptitude update sudo aptitude safe-upgrade # rubyのインストール sudo aptitude install ruby1.8 sudo aptitude install ruby1.8-dev sudo aptitude install rubygems # MySQLを使うならば sudo aptitude install mysql-server sudo aptitude install mysql-client sudo aptitude install libmysqlclient-dev # Railsをインストール sudo gem update --system sudo gem1.8 install rails # rails 2.3.4を指定してインストールしたいならば sudo gem1.8 install -v=2.3.4 rails # MySQLを使うならば sudo gem1.8 install mysql </code> ===== アップグレード ===== Railsのバージョンを上げたい。まず、 config/environment.rb の RAILS_GEM_VERSION を修正。その後 $ rake rails:update ===== 自動生成 ===== railsの各種アプリケーションモジュールはスクリプトで生成する。 scaffoldはモデル、コントローラ、ビュー、テスト、マイグレーションを一度に生成し、URL設定も行う。 script/generate scaffold item name:string price:integer => app/controller/items_controller app/model/item.rb app/view/items/index.html.erb app/view/items/new.html.erb app/view/items/edit.html.erb app/view/items/shot.html.erb db/migrate/xxxxxxxx_create_items.rb modelはモデルとマイグレーションを作成する script/generate model item => app/model/item.rb db/migrate/xxxxxxxx_create_items.rb controllerを作成する script/generate controller cart => app/controller/cart_controller マイグレーション(DB定義の管理)を作成する script/generate migration add_grade_on_items => db/migrate/xxxxxxxx_add_grade_on_items.rb マイグレーションは命名規則を考えておくと良い。(例:add_grade_on_items ならば items テーブルに grade カラムを追加する) 削除するときは destroy script/destroy model item ====== Rails 3 ====== Ruby on Rails 3に関する情報 ===== インストール ===== * ruby 1.8.7 以降、あるいは ruby 1.9.2 以降をインストールする。 * rubygemsをインストールする。 Railsとbundlerをインストールする。 $ gem install rails $ gem install bundler 他の依存gemはbundlerで一括してインストールできるので、railsとbundlerのみをインストール。 ===== アプリケーション作成 ===== 新しいrailsアプリの作成 $ rails new application_name データベースの種類を指定 $ rails new application_name -d mysql 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.txt
· 最終更新: 2023/08/26 04:14 by
nullpon
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ