ユーザ用ツール

サイト用ツール


rails

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
rails [2011/04/20 01:21] – rails2固有の情報を分ける nullponrails [2023/08/26 04:14] (現在) – [Pow] 削除 nullpon
行 32: 行 32:
   * [[NetBeans]]にはRuby開発環境が存在する。gemのコントロールもできる。   * [[NetBeans]]にはRuby開発環境が存在する。gemのコントロールもできる。
      * [[http://journal.mycom.co.jp/articles/2008/01/27/rubyonrails/|NetBeansでRuby On Rails開発]]      * [[http://journal.mycom.co.jp/articles/2008/01/27/rubyonrails/|NetBeansでRuby On Rails開発]]
 +
  
 ===== 実行環境 ===== ===== 実行環境 =====
行 46: 行 47:
 Xenなどの仮想環境での運用には十分な慎重さが求められる。仮想環境ではディスク性能が全体のパフォーマンスに非常に大きな影響を与える。なぜならばCPUはマルチコア化で仮想化に対応しているが、ディスクは一つだからだ。IO負荷があまりに大きいとIO waitが跳ね上がってロードアベレージが100を越える事もあり、ホストOSすらも反応しなくなる。I/Oスケジューラの設定が間違っている事もあるので見直そう。 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 ====== ====== Rails 2 ======
 ===== Ubuntuにインストール ===== ===== Ubuntuにインストール =====
行 110: 行 116:
   script/destroy model item   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.1303262468.txt.gz · 最終更新: 2011/04/20 01:21 by nullpon