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 自体

2. cgi.rb

3. WWW::Mechanize 関係

3.1. Nokogiri

ページの構造解析をするモジュール

4. activerecord

ruby の O/R マッパー

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) 参考サイト:

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

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
ruby.txt · 最終更新: 2013/01/14 01:25 by 127.0.0.1
文書の先頭へ
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0