2010/09/23

rails3 でアプリ作るときに最初にやったこと

rails3 でアプリケーションを作る際に、最初にやったことをメモ。
jQuery, RSpec, PostgreSQL で作りたかったので、その環境作り。

◆初期設定
# jQuery, RSpec, PostgreSQL を使う
% rails new [app_name] -J -T -d postgresql
# いらないファイルを削除
% rm public/index.html
% rm public/images/rails.png
% rm .gitignore
% rm lib/tasks/.gitkeep
% rm public/stylesheets/.gitkeep
% rm public/javascripts/.gitkeep
% rm vendor/plugins/.gitkeep
# ジェネレータのテンプレートをコピー
% rake rails:templates:copy
# いったんコミット
% svn add *
% svn commit -m "initialized"

◆Subversion の ignore 設定
% svn remove log/*.log
% svn propset svn:ignore "*.log" log
% svn propset svn:ignore "*" tmp/cache/
% svn propset svn:ignore "*" tmp/sessions/
% svn propset svn:ignore "*" tmp/sockets/
% svn propset svn:ignore "*" tmp/pids/
% svn propset svn:ignore "*" tmp/sockets/
% svn propset svn:ignore "database.yml" config/

◆database.yml を編集(中身省略)

◆jQuery を導入
・Gemfile に gem 'jquery-rails' を追加
・インストール
% rails g jquery:install
      remove public/javascripts/controls.js
      remove public/javascripts/dragdrop.js
      remove public/javascripts/effects.js
      remove public/javascripts/prototyle.js
      create public/javascripts/jquery.min.js
      create public/javascripts/jquery.js
      create public/javascripts/rails.js
-J オプションで作成したから存在していないけど、prototype 関連のファイルを削除し、jQuery で使用する js ファイルが作成されてます。

◆RSpec を導入
・Gemfile に下記設定を追加
group :development, :test do
  gem 'rspec', '>= 2.0.0.beta.22'
  gem 'rspec-rails', '>= 2.0.0.beta.22'
end
・インストール
% rails g rspec:install
      create .rspec
      create spec
      create spec/spec_helper.rb
・config/application.rb に RSpec を使用することを宣言
module [app_name]
  class Application < Rails::Application
    # ...

    # Using RSpec for testing framework
    config.generators do |g|
      g.test_framework :rspec
    end
  end
end
◆devise を導入 ・Gemfile に gem 'devise', '1.1.2' を追加 ・インストール
% rails g devise:install
      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml

===============================================================================

Some setup you must do manually if you haven't yet:

  1. Setup default url options for your specific environment. Here is an
     example of development environment:

       config.action_mailer.default_url_options = { :host => 'localhost:3000' }

     This is a required Rails configuration. In production it must be the
     actual host of your application

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root :to => "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>
===============================================================================
・1, 2, 3 のうちとりあえず 1 だけ設定しておく

redmine で日付が表示されなくなった

まず、redmine を動かしている環境で rails3 へのアップデートをしたら、redmine がエラーを吐くようになった。
原因は i18n が更新されたかららしい。
freeze で固定されるのは rails 周りのバージョンだけだったっけか。
というわけで、コチラを参考に app/helpers/application_helper.rb にメソッドを追加。
するとエラーは吐かなくなった物の、日付が一切表示されなくなってしまった。
これはどうやら Setting.date_format が nil だからのようだ。
redmine で [管理] >> [設定] >> [日付の形式]を "規定の言語の設定に従う"のままだとこうなるようだ。
日付の形式を yyyy-mm-dd の形式に指定したら、表示された。

2010/09/22

メタプログラミングRuby

最近の電車のお供はメタプログラミングRubyである。
素晴らしい内容でRubyの黒魔術的なテクニックがわかりやすく、論理だって説明されている。
後半はActiveRecordのコードリーディングに近い内容で、これまた非常に勉強になる。

ただ一つ気になるのが、ちょくちょくアニメ?系のオタクくさいネタが盛り込まれている。
訳者の趣味なのかもしれないが、「ジャッジメントですの!」とか「恐ろしい子」とか正直うすら寒い。
フレーズはネット上で目にするものの、アニメに興味がなく元ネタをしらない私だからだろうが。
原著がこういうノリ(もちろんネタは違うだろうが)なら仕方ないが、どうなんだろう?
個人的には技術書でこういうのは好きじゃない。
ネタ仕込むにしても、もっと一般受けするネタあるだろうに・・・

でも内容は素晴らしいのでRubyやらない人にも学びある一冊だと思う。

2010/09/20

Rails3.0 でログファイルのパスを取得する

environment.rb などでログファイルのパスを取得したい場合ってあるよね。
開発環境でのログのローテーション設定とかね。
Rails 2.x ではログファイルのパスは config.log_path で取得できた。
Rails 3.0 では deprecated になったようで、paths.log を使えと警告される。
ところが、単純に paths.log ではパスは取得できない。
paths.log の実体は Rails::Paths::Path というクラスのオブジェクトなので、直接パスの文字列は取得できない。
to_s しても無駄。
で、どうすりゃいいのかと API 見ていると path という属性がある。
これだーと思って、paths.log.path としても nil が返ってくるばかり。
何でだーと思って、p paths.log とかしてみると、paths 属性にパス文字列の配列を持っているようだ。
というわけで、ログファイルのパスを取得するには paths.log.paths[0] としなければならないようだ。
読み取り専用の path 属性とかあれば、普通そっちだと思わないかい?

2010/09/19

関西風手打ちうどん

最近恵比寿に仕事場が一時的に変わりました。
恵比寿は食べるとこが多いのでちょこちょこ探索してます。

で、先日行ってきたのが関西風手打ちうどんのお店。
関東にある黒くない出汁のうどん屋はほとんどが讃岐うどんのお店なので、関西風は珍しいのです。

この時食べたのはきのこ丼のうどんセット。
関西風うどんは讃岐うどんよりももっちりしてる。
讃岐うどんの腰のあるシコシコ感もいいけど、久しぶりのもちもちうどんもうまいわー。
太さが不揃いなのも手打ち感があっていいね。

これで800円ならまあいいんじゃないかと。恵比寿だし、他で食べてもこれぐらいいくからなぁ

2010/09/14

アテ作り

毎回サラミばっかり買ってては酒のアテ代もバカにならないと思い思案してみた。

手軽に作れて出来れば栄養あるほうがいい。

というわけで浅漬けを作りだした。
キャベツと白菜とキュウリ。
それの浅漬けの素。

仕事の都合でキャベツだけ先に作ったのでお味見。
なかなかイケるじゃあないか。
これで夕食がわりの晩酌でも健康的に飲めるな。

まあキャベツ、白菜、キュウリの栄養なんてしれてるけどな

2010/08/28

ダニ纖滅作戦

しばらくぶりの日記である。

お盆に両親が来て鎌倉案内したり
鎌倉の後に箱根で温泉入りたいと言ってたので富士山が見える露天風呂のホテルを予約したら、濃霧で富士山どころか10m先すら見えなかったり
八月三回目のサーフィン行ったり
事務所のベランダから仕事の合間に花火大会見たり

忙しいながらもかろうじて夏らしく生きてます。

そんなに忙しくしていたら、家の中がおろそかになってたのか、どうやら座椅子が虫の一大要塞となっていたらしく、太ももの裏側だけめちゃ虫に食われてかゆいのなんの

布団のシーツとかは定期的に洗ってるので座椅子しか有り得ない!

ということで昨日の休みに纖滅作戦を決行した。
まずは近代兵器ダニアースを買ってきて外部攻撃。これ以上の侵入を許さない。
次にダニアースを変形させ針モードで内部攻撃。籠城なんぞもっての他。
最後にベランダにてお天道様による全体攻撃。のこらず死滅するがいい!!

というわけで作戦は無事終了した。
これでかゆいの治るといいなぁ

2010/08/04

浴衣をクリーニング

昼休みに浴衣をクリーニングに出しに行った。
帯と浴衣で2500円オーバー。
たかっ!!
普段のワイシャツ200円の感覚がベースだからそう感じるだけか。
てかワイシャツは安すぎるなあ。
家のそばのクリーニング屋なら100円だし。
ちょっと差がありすぎるわ

2010/08/03

サーフィン初体験

昨日は休みを利用して朝からサーフィンの体験レッスンへ。

朝は怪しかった天候も九十九里につく頃にはすっかり快晴。
人生初のスウェットスーツを苦戦しながら着用し、いざ浜辺へ!

浜辺がきれい!横浜に引っ越して、初めて湘南に出たとき海と浜辺の汚さにがっかりしたもんだが、九十九里は浜辺がきれいで広くていいなぁ。
カモメが青空を優雅に飛んでいるのも絵になるわー

さて肝心のレッスン。
・用語などの基礎知識のお勉強
・基本の姿勢と波を掴むする練習
・波を掴んでから板に立つ練習
こんな感じで約三時間ほど

なんとか立つコツが掴めた感じかなぁ。
バランスとったり細かい所は難しいけど、やってることは難しくない。
後は慣れなのかな

また行きたいなぁ。
いやー今年は夏らしい事がやれたぞ。

2010/08/01

scala-2.8.0.final on Windows7 64bit

Windows7 64bit に scala-2.8.0.final を設定したのでログ残し。
  • まず、ここから scala-2.8.0.final.zip をダウンロード
  • ダウンロードした zip ファイルを C:\scala\scala-2.8.0.final として展開
  • 環境変数 JAVA_HOME が設定されていることを確認
  • 環境変数 JAVACMD に java を設定
  • 環境変数 SCALA_HOME をC:\scala\scala-2.8.0.finalに設定
  • 環境変数 PATH に %SCALA_HOME%\bin を追加
これで動く。

はずなんだが、環境によるとコマンドプロンプトで scala のREPLを起動させた場合、「java.exeの使い方が誤っています」というエラーメッセージが出る場合がある。
これは、OS が 64bit の場合に出るんだけど、原因は scala.bat の32行目と、JDKインストールされているディレクトリ。
if exist "%JAVA_HOME%\bin\java.exe" set _JAVACMD=%JAVA_HOME%\bin\java.exe
OS が 64bit で x86 用の Java をインストールしている場合、C:\Program Files(x86) 以下にインストールされている場合が多い(デフォルトだから)
この(x86)がクセモノで、丸括弧によってブロックと認識されてしまい、\Java\jdk1.6.0_xx\bin\java.exe だけ単独の命令として扱われてしまう。
対策としては、以下が考えられるかな。
  1. 64bit 用の JDK をインストールする
  2. 32bit 用の JDK だけど、丸括弧の含まれないパスにインストールする
  3. scala.bat と scalac.bat の問題の部分をコメントアウトする。ただし、%HAVA_HOME%\bin にパスが通っていること
ちなみに、俺は 1 でやった。
システム上の都合で、新規に JDK をインストールできないならば、3しかないかなぁ。
環境変数の遅延展開とか試してみたけど、どうも挙動がおかしい。