rails」タグアーカイブ

rbenv,ruby-buildをインストール

rbenvはシンプルにRubyのバージョンを切り替えて使うだけのツール。RVMよりできることがすくない!というのがいかにも37signals。といっても

Provide support for per-project Ruby versions.

はRVMでは無理じゃなかったかな?

RVMから移行するため、まずRVMを削除した。RVMの削除は

$ rvm implode

を実行。やたらエラーみたいなのが出まくったけど、終了後に.rvmrcやら、.bash_profileに追加した設定やらを削除して、sourceを実行したら消えたっぽい。sourceを実行したのは、しないとcdでエラーがでた(rvmがcd書き換えてるから?)ので。

インストール手順はgithubにあるInstallationにあるとおり。githubには、インストールあとにRailsで使う使い方が書いてないので、以下に補足する。
インストールしたあとは

$ rbenv global 1.9.2-p290

すればRubyは使える。
bundleするには

$ rbenv exec bundle install

する。rbenv execはgithubに書いてないけど、webで検索すると出てくる。rbenv commands すると確かにあるし。ちなみに検索するとけっこう出てくるset-defaultはglobalに置き換えられている。
rails s するなら

$ rbenv exec bundle exec rails s

を実行する。

Rails 3.0,jQuery,Mongoid,RSpec Rails,mongoid-rspec,I18n generatorsで開発する準備をする

なんかいつも同じパターンで調べてばかりいるので、書いておくことにする。
まず、プロジェクトをオプション付きで作成する。

rails new アプリケーション名 -OJT

Gemfileを編集する。

source 'http://rubygems.org'

gem 'rails', '3.0.10'
gem 'jquery-rails'

gem 'mongoid', '~> 2.2'
gem 'bson_ext', '~> 1.3'

group :test, :development do
  gem 'rspec-rails', '~> 2.6'
  gem 'mongoid-rspec'
  gem 'i18n_generators'
end

RAILS_ROOTでコマンドを実行する。

$ rails g rspec:install
$ rails g mongoid:config
$ rails g jquery:install

spec/spec_helper.rbを編集する。2行コメントアウトして、1行追加する。

RSpec.configure do |config|
  # config.fixture_path = "#{::Rails.root}/spec/fixtures" 
  # config.use_transactional_fixtures = true
  config.include Mongoid::Matchers # 追加
end

GAEでRailsってみた。

Ruby Freaks Lounge:第16回 Google App Engine上でRailsを動かす|gihyo.jp … 技術評論社見てやってみた

  • gitがなくてrake gae:initできなくて2時間くらいはまった。
  • 念のためRails2.3.2でやったけど、最新のRails2.3.3ではどうなんだろ。
  • ローカルの確認でSubmitしてもデータが表示できなかった。GAEにアップしたらできた。本当のところはどうなんだろ。

Redmine 0.7.3から0.8.0にアップグレードする

UbuntuでPassengerを使って動かしていたRedmineをアップグレードしてみた。手順はRedmine.JPにあるダウンロードしたリリース版のアップグレードにしたがう。上書きではなく新しいディレクトリに展開するなんて珍しいと思ったが、Passengerを使っているとRailsディレクトリ下のpublicディレクトリへのシンボリックリンクを書き換えればいいだけなので、もとのディレクトリも保持しておける点で好ましい。

アップグレード後スタイルシートが適用されないので腹八分目。をみて対処した。public/.htaccessの

Options +FollowSymLinks +ExecCGI

をコメントアウトしてmod_rewriteを有効にする。

$ sudo a2enmod rewrite

Changelogは英語でよくわからないんで実際動かしてみた。うれしいところとしては

  • カレンダー・ガントチャートで絞り込みできるようになった

チケットがありすぎるとガントチャートが長大になるので、絞り込めるようになったのはありがたい。さらにいうと

  • カテゴリごとにソートされる(ソート順が選べる)
  • チャートに週でなく日付が表示される
  • 土曜日は青、日曜日は赤で表示される。

くらいにできて、そのままPDF出力までできちゃえばな〜

追記 CentOS5.2ではスタイルシートの対処は不要だった。

PhusionからDebian用Rubyパッケージがでた

すべてのRailsユーザがお世話になっているといっても過言ではないだろう、Phusion Passengerを提供しているPhusionからDebian用のRubyパッケージが出た

apt-get install rails

ができちゃうわけだ。
Debian的には独自のパッケージ管理システムであるRubygemsに批判的だったのでそこをついた形だ。パブリックベータのうちは無料だが、正式版では有料ですでに価格も出ている。最低価格は144USD/年、かなり強気だ。

しかしDebianといえば「フリーソフトウェア」を貫いているディストリビューション。Ubuntuもエンタープライズより個人ユースのほうが多いのではないか。なんとも皮肉な話だ。

Rails2.2.2 でi18n

config/environment.rbで

# The internationalization framework can be changed to have another default locale (standard is :en) or more load paths.
# All files from config/locales/*.rb,yml are added automatically.
# config.i18n.load_path < < Dir&#91;File.join(RAILS_ROOT, 'my', 'locales', '*.{rb,yml}')&#93;
# config.i18n.default_locale = :de
&#91;/sourcecode&#93;
がある。コード部分をコメントアウトして、load_pathに追加する「&lt;&lt;」を「+=」に修正(2.2.2のバグ)する。今回はロケールをjaにするので、:deを:jaとする。

翻訳ファイルの置き場所として、config/localesディレクトリを作成する。

validationなどはすでにrails-i18nに用意されているので、ダウンロードしてlocales以下に置く。日本語の場合はja.ymlをダウンロードする。ja.yml中activerecordが2つあって1つめが無効になってしまったので、ひとつにまとめておく。具体的には
&#91;sourcecode lang="ruby"&#93;
  activerecord:
    errors:
      template:
        header:
          one: "{{model}}にエラーが発生しました。"
          other: "{{model}}に{{count}}つのエラーが発生しました。"
        body: "次の項目を確認してください。"

  activerecord:
    errors:
      messages:
&#91;/sourcecode&#93;
を
&#91;sourcecode lang="ruby"&#93;
  activerecord:
    errors:
      template:
        header:
          one: "{{model}}にエラーが発生しました。"
          other: "{{model}}に{{count}}つのエラーが発生しました。"
        body: "次の項目を確認してください。"
      messages:
&#91;/sourcecode&#93;
と修正する。

view、controllerで利用するには
&#91;sourcecode lang="ruby"&#93;
<td>< %= l(survey.started_at) %>
<td>< %= l(survey.ended_at) %></td>
<td>< %= link_to t('Show'), survey_questions_path(survey) %></td>

ここでl,tメソッドがi18nしている。lはlocalizeのaliasで、localeに応じた日付フォーマットでstrftimeする。tはtranslateのaliasで、翻訳ファイルにあるものを返す。上記ではShowがキーになるので、ファイルに追加する必要がある。

validationで表示されるテーブル、カラム名を翻訳することもできる。
テーブル名「Todos」、カラム名「title」の場合、

ja:
  activerecord:
    models:
      todo: "Todo"
    attributes:
      todo:
        title: "タイトル"

とする。テーブル名は複数形だが、ファイル中では(クラス名なので)シングルにする必要がある。

翻訳ファイル中で言語をキーにしているので、ファイルはひとつでもよいし、たくさんでもよい。フレームワークで利用するファイルとアプリケーション固有のファイルを言語ごとにわければメンテナンス性に優れているだろう。