目次
ruby の管理 (rvm)
今時は rvm で管理する.rvm だけインストールしておいて,残りは適当に切替える.
# apt-get install ruby-rvm
rvm コマンド
- rvm list known
インストール可能な ruby パッケージのリストを表示
- rvm get head
インストール可能な ruby パッケージリストをアップデートする
- rvm reload
アップデートされたパッケージリストを再読み込みする.
- rvm install 1.9.2-p290
バージョン 1.9.2-p290 の ruby をインストールする.
- rvm use 1.9.2
指定バージョンの ruby を利用する.ただし,patch level が変わるだけの時は,upgrade を使う.
- rvm 1.9.2 –default
1.9.2 (patch level は関係ない) をデフォルトで利用するように設定.
- rvm upgrade ruby-1.9.2-p180 ruby-1.9.2-p290
patch level をあげる.
rvm の動作
- 今までのやりかたで行くと,/usr/share/ruby-rvm/environments/ruby-1.9.2-p290 というファイルに rvm use 1.9.2 を利用するための環境変数が書き込まれている.これを読み込むことで 1.9.2-p290 のパスが利用できるようになる.
- 例えば,少しバージョンの違う別の環境変数が何回か読み込まれたりすると,読み込む先が混乱するのでうまく動作しなくなる可能性がある.
gem
gem の動作
- /usr/share/ruby-rvm/gems/ruby-1.9.2-p290/specifications/ 近辺に,gem (ruby のパッケージ)情報が含まれている.適当に消すと微妙に不整合が出るけど,最悪ここを消す.
- invalid date format 見たいなのが出てきたら,とりあえず,bundle 経由で入れられたすべての gem を uninstall (shell の for とかで回すしかない)した後に,specification を削除して,再度インストールする.
gem コマンド
- gem list
rvm で選択された環境にインストールされた gem の一覧が見られる.
- gem uninstall <パッケージ名>
uninstall する.ただし,実際に rm されるわけではないみたい.多分,どっかの meta データで論理的に削除しているだけ.
- gem cleanup <パッケージ名>
だぶっているパッケージを最新のみ残して,他のを削除する.
- gem update <パッケージ名>
パッケージ名 をアップデートする.
rails 3.x の構築
- ruby 1.9.2-p180 だと SSL 関係で問題があるみたい.p290 にするべき.(no such file to load - openssl )
freebsd で iconv の gem を入れる時 (2013/01/14)
- FreeBSD の iconv header は、/usr/local/ 以下にインストールされるため、gem install に以下のようなオプションを付けておく必要がある。
gem install iconv -- --with-opt-dir=/usr/local/
以下古い.rails 2.x 時代の記述
1. ruby 自体
-
- ruby 開発元ドキュメント。そこそこ見やすい。
2. cgi.rb
3. WWW::Mechanize 関係
-
- mechanize の使い方,結構良い感じ.
3.1. Nokogiri
ページの構造解析をするモジュール
4. activerecord
ruby の O/R マッパー
-
- 簡単な active record の使い方導入
-
- find メソッド(SQL の select 相当) の見易い使い方
-
- Ruby on Rails 関係のAPI.ActiveRecord の API 詳細も.
-
- 使ってみた系の記事.見易い.
5. passenger for rails
- ports で rubygem-passenger を適当にインストール
% sudo passenger-install-apache2-module
- httpd.conf に以下を張り付ける (passengerのコマンドでも出てくるけど.)
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5 PassengerRuby /usr/local/bin/ruby18
6. rails の設定
(2.3 系列)
* rails は rest な設計を目指しているので,設置に関しては virtual host して,対象アプリケーションの URI がホスト名直下になるのがデフォルトになっている気がする.
- 好きなディレクトリに配置するには,以下のようにする.
- passenger(mod_rails)使用想定.
% cd somewhere % rails hoge && cd hoge % rake db:create % script/generate controller home index (home: コントローラ, index: 最初にアクセスされるべきアクション) % rm public/index.html % vi config/route.rb map.root :controller => "home", :action => "index" % cd /documentroot/xxx/ % ln -s /somewhere/hoge/public hoge % cd elsewhere % vi rails-config.conf RailsBaseURI /anywhere/xxx/hoge/ % vi /usr/local/etc/apache22/httpd.conf Include /elsewhere/rails-config.conf % sudo apache restart
- どうしても,passenger による rewrite は必要になってしまう.そこで,include ファイルをユーザ権利で書き換えられるようにしておくと,個人サーバレベルでは便利.(大規模な場合は知りません.)
- apache の再起動がどうしても必要なのがうざい.どうにかして,設定ファイルの動的なリロードはできないんですかね.
(2009/10/10) 参考サイト:
-
- 「passenger(mod_rails) でバーチャルホストを使わない複数アプリケーション動作」virtual host を使わなくて良い方法なので,とても助かる.
-
- 「作って覚える Ruby on Rails」簡単な step by step が書いてあるので,start up には便利.
7. rails アプリケーション作成のステップ
大体以下のような感じ.
% cd どっか % rails testapp % cd testapp % vi config/route.rb ## 上の記述と同じ % vi config/environment.rb 2 行目辺り: RAILS_ENV = 'development' (開発モード:production => 公開用, development => 開発用)
(ここまで環境設定系)
- ——
% vi lib/tasks/db_setup.rake
env = 'development'
database = “bbs_#{env}”
require 'activerecord'
def connect
ActiveRecord::Base.establish_connection(:adapter ⇒ 'sqlite')
end
task :db_setup do
ActiveRecord::Schema.define do
connect
begin
create_database database
rescue
end
end
end
task :db_clean do
ActiveRecord::Schema.define do
connect
end
drop_database database
end
(データベースファイル(hoge.dbとか)を touch するためのプログラム)
% rake db_setup
(上記のやり方は,古いっぽい.)
database.yml が存在する前提で,以下のコマンド.
database.yml は,プロジェクト作成時に以下の内容で作成される.デフォル トデータベースは rails 2.0 以上の場合,sqlite3.
# SQLite version 3.x # gem install sqlite3-ruby (not necessary on OS X Leopard) development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: adapter: sqlite3 database: db/test.sqlite3 pool: 5 timeout: 5000 production: adapter: sqlite3 database: db/production.sqlite3 pool: 5 timeout: 5000
database の名前に,プロジェクトの名前をつけておくと良いかもしれない. このままでも問題なし.
% rake db:create RAILS_ENV=production
% rake db:drop RAILS_ENV=development
(ここまでデータベースそのものの準備)
- ——
% script/generate model page % vi db/migrate/2009xxxxx_create_pages.rb class CreatePages < ActiveRecord::Migration def self.up create_table :pages do |t| t.column :title, :string t.column :created_at, :timestamp t.column :name, :string t.column :message, :text t.timestamps end end def self.down drop_table :pages end end % rake db:migrate
(ここまでデータベースの中身の設定)
- ——
% script/generate controller home index create (コントローラー名 => home, アクション名 => index, create)
あとは,それぞれ,以下のファイルにプログラム,HTML を書いていく.
- app/controllers/home_controller.rb
- app/view/bbs/*.html.erb