Migrateの方法

  • 定義ファイルを生成する
    $ ruby script/generate migration hogehoge
  • Migration の内容を定義する
    $ vi db/migrate/20081111001_hogehoge.rb
  • Migration を実行する
    $ rake db:migrate

構文

参考URL: http://webos-goodies.jp/archives/50741819.html

DBとHTTPヘッダの文字コードの指定(最近はUTF-8の場合は不要)

  • DBの接続時のcharacter setを指定 config/environment.rb
     # Include your app's configuration here:
     ActiveRecord::Base.connection.execute 'SET NAMES UTF8'
  • httpヘッダの指定 app/controllers/application.rb
       class ApplicationController < ActionController::Base
         before_filter :set_charset
         before_filter :configure_charsets
         
         def set_charset
           @headers["Content-Type"] = "text/html; charset=utf-8"
         end
         
         def configure_charsets
           @response.headers["Content-Type"] = "text/html; charset=utf-8"
         end
       end

というかアプリケーション全体をUTF-8で統一(最近は不要)

  • config/environment.rbの先頭行
    $KCODE='u'
  • database.ymlの各データベースの設定箇所
    development:
       adapter: mysql
       ...
       encoding: utf8
  • layoutファイルの<head>タグ内でメタタグにて指定
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  • application.rbのApplicationController?クラス定義内
     before_filter :set_charset
     private
     def set_charset
       headers['Content-Type'] = "text/html; charset=utf-8"
     end

emacs22のRailsモード

Syntax Error時の背景色の変更

/.emacsに以下を追記

;; for rails (the colors for syntax error)
(custom-set-faces
 '(flymake-errline ((((class color)) (:background "DarkRed"))))
 '(flymake-warnline ((((class color)) (:background "DarkBlue")))))

Debianの環境を破壊しないrubygemsのインストール方法

gem update --systemしてしまうと、ディレクトリ構造がまったく置き換わってしまうので、gem, rake, rails, Ruby-Gettextはdebの管理外にする。

間違って/usr/bin以下にファイルを置いてしまわないように、あえて、Root以外のユーザをOwnerとして gemやgemで提供されるソフトウェアをインストールする。

  • ruby, rdocパッケージをインストール
  • adduser でgemsというユーザを作成
  • mkdir /opt/gems を実行
  • chown gems.gems /opt/gems を実行
  • gemsユーザの ~/.bashrc の最後のほうに下記の行を追加、環境変数を指定
export GEM_HOME=/opt/gems/rubygems
export RUBYLIB=/opt/gems/lib
export PATH=/opt/gems/bin:/opt/gems/rubygems/bin:$PATH

これでgemのインストールはおしまい gemでライブラリやアプリをインストールするときには、常にgemsというユーザになり、gem install <package名>とすると、/opt/gems以下にライブラリや実行ファイルがインストールされるようになります。

gemsユーザにさえなっておけば、誤って/usr/bin等に間違ってファイルを作成してしまうこともなく、debianのパッケージ管理の環境を破壊しない。

また、passengerを使う場合、apache2の起動用スクリプトに変更を加える必要あり。(環境変数をわたす必要があるため)

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin RUBYLIB=/opt/gems/lib GEM_PATH=/opt/gems/rubygems"

autotestの設定

autotestの設定ファイル .autotest はプロジェクトのRAILS_ROOTに配置する。

.autotest (Rails標準のtest suiteを使用する場合)

ファイルの内容は次のとおり。

require 'autotest/redgreen'

module Autotest::Notify
 folder = "~/Pictures/rails/"
 def self.notify title, msg, img, pri='low', time=3000
   `notify-send -i #{img} -u #{pri} -t #{time} '#{title}' '#{msg}'`
 end

 Autotest.add_hook :red do |at|
   errors = at.files_to_test.map { |k, v| "#{k}:\n #{v.join("\n ")}"}.join("\n\n")
   notify "FAIL:", errors, folder+"rails_fail.png", 'critical', 10000
 end

 Autotest.add_hook :green do |at|
   res = at.results.scan(/Finished.*failures/m).to_s.gsub(/\e\[32m/,'')
   notify "PASS:", res, folder+"rails_ok.png"
 end
end

画像ファイル

/Pictures/rails/に、 rails_ok.png, rails_fail.pngを配置する。

jRuby環境でのtransactionのテスト

spec/spec_helper.rbの次の設定をfalseにしておかないと、transactionの箇所がRed判定になってしまう。(しかし、falseにすると、specの動作が遅くなるため、jRubyでの試験以外ではtrueにした方が良いかもしれない)

# jRuby & rspec needs config.use_instantiated_fixtures  = false for transaction test.
config.use_transactional_fixtures = false

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-09-12 (日) 01:09:45 (3297d)