[[ruby]]
----
====== 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 自体 ======
* [[http://www.ruby-lang.org/ja/man/html/]]
* ruby 開発元ドキュメント。そこそこ見やすい。
====== 2. cgi.rb ======
* [[http://www.tsukune.org/skk/a/doc/|cgi.rb rdoc on tsukune]]
* [[http://www.ruby-lang.org/ja/man/html/cgi.html|cgi - Rubyリファレンスマニュアル]]
====== 3. WWW::Mechanize 関係 ======
* [[http://d.hatena.ne.jp/kitamomonga/20081209/kaisetsu_for_ver_0_9_ruby_www_mechanize|きたももんががきたん。]]
* mechanize の使い方,結構良い感じ.
===== 3.1. Nokogiri =====
ページの構造解析をするモジュール
* [[http://d.hatena.ne.jp/otn/20090509/p1|スクレイピングのためのNokogiri利用メモ]]
====== 4. activerecord ======
ruby の O/R マッパー
* [[http://madeira.cc.hokudai.ac.jp/blog/articles/2008/07/03/use_only_activerecord|RubyのコードからActiveRecordだけを使う方法]]
* 簡単な active record の使い方導入
* [[http://d.hatena.ne.jp/nakakoh/20080510/1210390013|ActiveRecordのfindメソッド]]
* find メソッド(SQL の select 相当) の見易い使い方
* [[http://api.rubyonrails.org/|Rails Framework Documentation]]
* Ruby on Rails 関係のAPI.ActiveRecord の API 詳細も.
* [[http://ukstudio.jp/2007/10/activerecord/|UK STUDIO - ActiveRecord を使ってみる]]
* 使ってみた系の記事.見易い.
====== 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)
参考サイト:
* http://hwhack.blogspot.com/2008/10/passengermodrails.html
* 「passenger(mod_rails) でバーチャルホストを使わない複数アプリケーション動作」virtual host を使わなくて良い方法なので,とても助かる.
* http://www.goto.info.waseda.ac.jp/~wei/weiki/index.php?document%2F%BA%EE%A4%C3%A4%C6%B3%D0%A4%A8%A4%EB%20Ruby%20on%20Rails%20%28%A5%EA%A5%F3%A5%AF%BD%B8%29
* 「作って覚える 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
[[http://japan.zdnet.com/blog/yoshimi/2008/01/11/entry_27016443/|rake の簡単まとめ]]
(ここまでデータベースそのものの準備)
* ------
% 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