• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
 
 

本日の午前中、比較的長期間当ブログにアクセス出来ない状態が発生しておりました。ご不便をおかけいたしましたことをお詫びいたします。

原因としては、Railsプロセスが暴走していたことが考えられます。 そのため、当blogで使用しているRailsのバージョンを 2.3.5から2.3.11に アップグレードいたしました。 またしばらく様子を見て対応を考えます。

よろしくお願いいたします。

posted by Png genki on Sun 15 May 2011 at 04:38

久々にRails関連の記事です。

vendor/gems 以下に gemをunpackしたときに、以下のような警告が出てくることがあります。

   1  Unpacked gem *** in vendor/gems has no specification file.

*は適当なgemの名前)この場合、

   1  % cd vendor/gems/***
   2  % gem specification *** > .specification

を実行すれば解決します。

posted by Png genki on Sun 7 Nov 2010 at 01:19

現状

   1  % gem --version
   2  1.3.6
   3  
   4  % ./script/console
   5  Loading development environment (Rails 2.2.2)
   6  /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/gem_dependency.rb:224:in `specification':NoMethodError: undefined method `version_requirements=' for #<Gem::Dependency:0xb7769604>

  • rails 側での対応はなし
  • rubygems 側は trunk で修正済
  • rubygems の新バージョンはなかなか出ず

対策

  • rubygems の trunk から最新版をインストールする (git じゃないのがダサイ)

インストール

(/tmp/ あたりの適当な場所で実行)

   1  % svn export http://rubygems.rubyforge.org/svn/trunk/ rubygems
   2  A    rubygems
   3  A    rubygems/History.txt
   4  ...
   5  リビジョン 2460 をエクスポートしました。
   6  
   7  % cd rubygems
   8  # ruby setup.rb

(setup.rb の実行でインストールされます。必要に応じてrootで)

確認

   1  % ./script/console
   2  Loading development environment (Rails 2.2.2)
   3  /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/gem_dependency.rb:224:Warning:...
   4  /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/gem_dependency.rb:224:Warning:...
   5  ...
   6  > User.count
   7  => 25707

warning が一杯出るが気にしない。 rubygems 1.3.7 が出るまで、とりあえずこれでOK。

posted by Png maiha on Sun 7 Mar 2010 at 13:34

Rails + Cucumber で Culerity を使うと、 以下のような WARNING が大量に発生する。 これでは、いくらテストがgreenでも精神はredになってしまう。

   1  % cucumber features/foo.feature
   2  Using the default profile...
   3  2010/01/20 18:43:57 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
   4  警告: Obsolete content type encountered: 'text/javascript'.
   5  2010/01/20 18:43:58 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
   6  警告: Expected content type of 'application/javascript' or 'application/ecmascript' for remotely loaded JavaScript element at 'http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/amazonJQ/amazonJQ-combined-core-5113._V228305908_.js', but got 'application/x-javascript'.
   7  (...)
   8  .
   9  
  10  1 scenario (1 passed)
  11  1 step (1 passed)

この警告メッセージは、 HtmlUnit が吐いているものであるが、 Culerity::RemoteBrowserProxy のオプション(log_level) で制御することができる。 具体的には、 "script/generate culerity" を利用した場合、 以下の step ファイル内で定義されている。

   1  % vi features/step_definitions/culerity_steps.rb
   2  -  $browser.log_level = :warning
   3  +  $browser.log_level = :severe

(celerity の default は :off だが、culerity が :warning にしている)

上記の修正によって、WARNING の表示が抑制される。

   1  % cucumber features/foo.feature
   2  Using the default profile...
   3  .
   4  
   5  1 scenario (1 passed)
   6  1 step (1 passed)

新規プロジェクトの度に毎回変更するのが面倒であれば、 generator の template を直接変更するのもいいかもしれない。

   1  % vi $GEM_PATH/gems/culerity-0.2.7/rails_generators/culerity/templates/features/step_definitions/culerity_steps.rb

指定可能な log_level は、 (高) :all, :severe, :warning, :info, :config, :fine, :finer, :finest, :off (低) であり、実際に以下のコードで確認することができる。(JRuby)

   1  % irb
   2  irb(main):001:0> java.util.logging.Level.constants
   3  => ["FINE", "CONFIG", "FINEST", "FINER", "WARNING", "SEVERE", "OFF", "INFO", "ALL"]

log level に関するさらなる詳細は java.util.logging.Level を参照のこと。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/logging/Level.html

posted by Png maiha on Wed 20 Jan 2010 at 10:39

(以下は PostgreSQL を例にしてますが、他のドライバでも通用すると思います)

install

まずは JRuby 用のドライバをインストールします。

   1  % gem install activerecord-jdbcpostgresql-adapter

設定

通常は database.yml に "adapter: jdbcpostgresql" と記述して利用するのですが、ここでは別の方法を紹介します。 内容は簡単で以下のコードを評価するだけです。

   1  if RUBY_PLATFORM == "java"
   2    require "active_record/connection_adapters/jdbcpostgresql_adapter"
   3  end

(Railsであれば "config/initializers/jruby_compat.rb" などに記述しておくとよいでしょう)

メリット

  • MRI と同じアダプタ名 "postgresql" を利用できる
  • 変更なしで MRI, JRuby のどちらでも動作する

実行例

   1  % rvm use system
   2  % ./script/console
   3  >> User.count
   4  => 6
   5  >> User.connection.class
   6  => ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
   7  
   8  % rvm use jruby
   9  % ./script/console
  10  >> User.count
  11  => 6
  12  >> User.connection.class
  13  => ActiveRecord::ConnectionAdapters::JdbcAdapter

JRuby はまだ発展途上ですので、 開発や挙動確認で MRI を利用する局面が多々あります。 そんな折、この方法であればいちいち database.yml の内容を変更する必要がないため、非常にシームレス&快適に利用できると思います。

posted by Png maiha on Mon 18 Jan 2010 at 23:44

しばらくRails-2.3.2を使っていましたが、passengerのバージョンを上げてから微妙に不安定になった気がしたのでRails-2.3.5にアップデートしてみました。

今回は無変更でアップデートできました。

posted by Png genki on Wed 30 Dec 2009 at 06:47

高井さんから献本いただきました。ありがとうございます。

エンタープライズ Rails
Dan Chak
オライリージャパン
売り上げランキング: 4228

第一章の冒頭でも触れられていますが、本書の対象読者はWebアプリケーションを作った事がある人が対象です。

  • エンタープライズとは何か
  • 作ったWebサービスが流行ったらどうしたら良いのか
  • ActiveRecordが何をやっているかわからない

本書を読めば、このへんの疑問の答えが見つかると思います。 分量も300ページほどで読みやすく、 Railsで仕事をしている人にとっては必携だとおもいます。

Railsに関する他書と比べて、陳腐化しにくい内容を扱っているので、 お守り的に買っておいても良いと思います。

それにしても、表紙の生物が気になりますね。

posted by Png genki on Sat 15 Aug 2009 at 05:52

最近はRailsあまり追いきれていない日比です。

ひょんなことから、AkitaOnRails@twitter(秋田さん)とtweetしていて、「Rails、日本でどうなの?」と質問を受けました。

秋田さんには以前ブログを読んで参考にさせていただいたことがあって、ちょっと感激なので、エントリにさせて頂きまっす。

秋田さんは日系三世なんだそうで、日本でのRailsの状況について興味をもたれているらしく、自身のブログでエントリで「日本でのRailsの状況」の情報提供を呼びかけておられます。Railsな方、ぜひぜひコメントくださいませー!

http://www.akitaonrails.com/2009/07/15/rails-developers-in-japan

AkitaOnRails.jpg

posted by Png satoko on Wed 15 Jul 2009 at 06:50

Cucumberのfeatureを実行すると、上記のエラーが出て困ったので探したら

I resolved it by uninstalling the old "bryanary-webrat" gem and making sure that "webrat" was up to date (0.4.3)

When you have both installed, ruby tends to load the old one instead.
http://groups.google.com/group/webrat/browse_thread/thread/d8ea685a1b1931a5#

古いwebrat gemを消しなさいと。

   1  gem search webrat
   2  
   3  *** LOCAL GEMS ***
   4  
   5  aslakhellesoy-webrat (0.3.2.2)
   6  webrat (0.4.4, 0.4.3, 0.3.4)

案の定古いwebratがあったのでaslakhellesoy-webratをuninstallしたら動きました!

posted by Png satoko on Tue 14 Apr 2009 at 15:14

polymorphic_urlの中身で使われている build_named_route_callのソースを貼付けておきます。

   1        def build_named_route_call(records, namespace, inflection, options = {})
   2          unless records.is_a?(Array)
   3            record = extract_record(records)
   4            route  = ''
   5          else
   6            record = records.pop
   7            route = records.inject("") do |string, parent|
   8              if parent.is_a?(Symbol) || parent.is_a?(String)
   9                string << "#{parent}_"
  10              else
  11                string << "#{RecordIdentifier.__send__("plural_class_name", parent
  12  )}".singularize
  13                string << "_"
  14              end
  15            end
  16          end
  17  
  18          if record.is_a?(Symbol) || record.is_a?(String)
  19            route << "#{record}_"
  20          else
  21            route << "#{RecordIdentifier.__send__("plural_class_name", record)}"
  22            route = route.singularize if inflection == :singular
  23            route << "_"
  24          end
  25  
  26          action_prefix(options) + namespace + route + routing_type(options).to_s
  27        end

posted by Png genki on Wed 1 Apr 2009 at 13:18