Rails

アップグレードダウン

RubyMineの2.0βを試したくて、暫くぶりでRailsで書いたアプリケーション(scaffold)を起動したら、何故かエラーが出て動かない。どうやらRailsを2.3に上げたのが原因なのだが、そんな違いがあったっけか。・セッションキーの設定 `ensure_session_key': A key…

Heroku

HerokuWebブラウザを使ってRailsの開発ができる、ということで話題になったHeroku Gardenだが、本家のHerokuはRuby on Railsをホスティングする、いわば"Rails-PaaS"(といってもいいだろう)マルチテナントサービス。バックエンドにはAmazon EC2を使っている…

radio_buttonの:checked属性にブール式が可能になっていた件

バージョン幾つからか分からないのだが、erbに以下のようにform_forでHTML Formを書く場合、 { :action => :query} do |f| %> (@form.gender == :male || @form.gender == nil) %>男 (@form.gender == :female ) %>女 元々のRailsの実装ではBuilderのradio_b…

ActiveRecord(oracle_enhanced_adapter)のモンキーパッチ

oracle_enhanced_adapterのtablesメソッドは他のConnectionAdapter同様にテーブルしか列挙しないため、Oracleの既存のView(ビュー)、Synonym(シノニム)をActiveRecordで活用できない。 def tables(name = nil) #:nodoc: select_all("select lower(table_name…

Ruby 1.8.6-p368

Ruby 1.8.6-p368 リリース早速試してみようとビルドして(ビルド自体は1.8.7系とは違い、問題無し)Railsを起動してみたのだが、1.8系がOKのはずのMongrelが動かん。 E:/ruby1.8.6_p368/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/http11.so: 1…

form_tagのオプションとブロック

Railsでモデルと関連の無いところでフォームのデータを取ろうと思い、以下のようにform_tagを記述したのだが :query , { :name => "hogeForm", :id => "hogeForm"} %> エラーが出てしまう。 compile error /app/init.html.erb:2: syntax error, unexpected '…

カスタムタグ(のようなもの)

Java-JSPでは「カスタムタグ」と呼ばれる独自のタグを定義することでビュー中のコンポーネントをJavaで実装することができた。 uri="/WEB-INF/hogeb.tld" prefix="hoge" %> これと同じことをRailsで実現しようとする場合、どのような方法が良いのだろうとい…

Rails 2.3.2と$KCODE

先日のエントリで発生した文字コードのエラーだが、Rails::Initializerの初期化で発生しているらしく、Rakeタスクの実行だけでも再現することが解った。 E:\www\master>rake db:schema:dump (in E:/www/master) rake aborted! E:/www/master/config/initiali…

Rails 2.2.2 -> 2.3.2

このままではどんどん遅れていくし、まだコーディング量が少ない内にと思い、Railsのバージョンを上げることにした。 依存しているgemは2.2と全く同じなので、トラブルが出そうなアップグレードではなく潔くインストールし直す。 rails-2.3.2.gemと依存するg…

Rails 2.2.2でページネーション

既出だが、Rails1.xでは標準だったページネーション機能が2.0以降は省かれているため、Railsのプラグインとして別途導入する必要がある。Home - mislav-will_paginate - GitHubRails 1.2相当のpaginateはclassic_paginateだが、今更古いバージョンを使うこと…

relative_url_root= has been renamed

Mongrel起動時に指定する--prefixパラメタは、内部では以下のようにMongrel::Rails.rails(rails.rb)でセットされている。 def rails(options={}) : : 略 ActionController::AbstractRequest.relative_url_root = ops[:prefix] if ops[:prefix] @rails_handle…

デプロイ本

Railsデプロイ/ Ezra Zygmuntowicz (著), Bruce A. Tate (著), Clinton Begin (著), 前田 修吾 (監訳) (翻訳), 橋本 将 (監訳) (翻訳), 小倉 正充 (監訳) (翻訳), 牧野 聡 (翻訳) このような書籍が、それもオライリーから出てくるってことはRailsも本当の意…

Rails 2.2で既存のテーブルを使う

既存のテーブルをRailsで使う場合の鬼門は・テーブル名称が'Rails-Aware'ではない(複数形を使っているとは限らない) ・プライマリキーの名称(列名)が'Rails-Aware'ではない(idという名前ではなく、コード設計上で一意とされている名称が使われる)本来はRails…

MongrelはRuby 1.9と互換性が無い

#25 (mongrel not compatible with Ruby 1.9) - Mongrel - Tracがーん。 Note that currently gem install mongrel under 1.9 doesn't work [and it shouldn't] but it fails because it requires fastthread, and fastthread doesn't compile under 1.9 [at…

Rails 2.2でsjisを使う

既存システムのRails適用における大きな課題の一つはレガシデータベースを取り込むことだが、既存のデータベースは未だにsjis文字セットが主流だ。(少なくとも私の周辺ではそう)以下、備忘録としてメモ。手順1. config\database.yml development: adapter: o…

Rails 2.2のscaffoldでRuntimeError

再現方法1. 適当なモデル(いつもの'Person')と、対応するテーブル(いつもの'People')を生成 (generate model person ... ) 2. 静的なscaffold形成 (generate scaffold person name:string, address:string, ...) 3. 生成されたperson_controller内のnewメソ…

Railsの凍結とmongrel.rbのパッチ

Railsは日々コードがメンテナンスされており、バージョンの遷移が非常に速い。私なんぞRails 1.2から勉強を初めた若輩だが、現在のRailsのバージョンは既に2.3だという。 このような状況の中で正しいバージョンのRailsを使ってアプリケーションを動かすため…

Mongrelのオプションを通常のserverスクリプトから設定する

Railsのサーバとして使うMongrelには特徴的なオプションが多数あるが、それらはMongrelのコマンドから使用することを前提にしている。 mongrel_rails start -e development --prefix /addressbook MongrelはインストールされるとRailsのサーバ起動スクリプト…

JetBrains RubyMine™

先日のエントリで紹介したRDE(Ruby Development Environment)だが、Rails(2.2)の実行はできるものの、デバッグを行うのはちょっと無理のようだ。(私ができないだけかもしれないが、ブレークポイントを張って、実行中にRDEのデバッガで割り込みむと、serverの…

RDEのインストール後、デバッグに失敗する

RDE(Ruby Development Environment) - Ruby開発環境※ちょっと使ってみようと思ってインストールしてみたのだが、スクリプトの実行はできるもののデバッグに失敗する。 no such file to load -- debug2 (LoadError) debug2 ?そんな名前のスクリプトあったか? …

activerecord-oracle_enhanced-adapterを実際に使ってみた

前提は、以前のエントリで書いたのとほぼ同じ。 違うのはdatabase.ymlのアダプタ名を"oracle_enhanced"に変更すること。 development: adapter: oracle_enhanced encoding: utf8 database: データベース名 pool: 5 username: ユーザ名 password: パスワード …

activerecord-oracle_enhanced-adapterの正体

前回のエントリのまとめ デフォルトのgemリポジトリhttp://gems.rubyforge.org/から、activerecord-oracle-adapterの取得に失敗する デフォルトのリポジトリからは、代わりにactiverecord-oracle_enhanced-adapterというgemが見つかる Railsのデフォルトのda…

Ruby on Rails2.2でoracle(10g)を使用する(も上手くいかず)

これに関してはいろいろなサイト、Blogで紹介されているので楽勝だと思ったのだが... 前提 Ruby1.8.7(mswin32)がインストールされている Rails 2.2がインストールされている Oracle 10g Database Client for Windowsがインストールされている 手順 1. rub…

Rails 2.2+RubyGem 1.3.1環境でactiverecord-oracle-adapterの取得に失敗する(解決)

Rails 2.0/2.1では上手く取得できているとコメント頂いたので、これは私の使用しているgemが検索しているリモートリポジトリが通常とは違うのだろう。ということで、敢えてRailsのリモートリポジトリを明示的に指定してみた。 E:\ruby>gem install activerec…

gemは自分でインストールした方が良い

自分がたまたまプロキシ下で作業しているために、普通にgem installと叩いてRubyForgeの探索と依存性の検査、自動インストールが出来なかったのだが、お陰でgemの構造を勉強出来、必要なgemが他のどのgemに依存しているかも知ることができた。便利なインフラ…

Mongrelをローカルでインストールする

プラットホームがWindows(x86)の場合、必要gemは以下の通り。 mongrel-1.1.5-x86-mswin32-60.gem - gem_plugin-0.2.3.gem - cgi_multipart_eof_fix-2.5.0.gem これだけ。テストに使用しているscaffoldであれば、ディレクトリに移動してコマンド一発でMongrel…

MongrelとIIS7を統合する(Application Request Routing ModuleでIIS7をリバースプロキシ化する)

残念だがIIS+FastCGI+RubyForIISの不安定さに絶望したので(私の環境だけだろうと信じたい)とっとと構成を変えることにした。WebサーバはIISのまま(本当はApacheの方が実例も多いし良いのだろうが、私の関わった顧客のサーバはIISばかりなのだ)静的なコンテン…

fcgi.rbのpure-rubyモード

fcgi.rbを見ていると、冒頭が begin raise LoadError if defined?(FCGI_PURE_RUBY) && FCGI_PURE_RUBY require "fcgi.so" rescue LoadError require 'socket' require 'stringio' class FCGI 〜 と書かれているので、ひょっとしたらFCGI_PURE_RUBYを真にした…

RubyForIISのエラー再び

完璧になったはずのIIS-FastCGIによる、 Railsアプリケーションのホスティングだが、またエラーの憂き目に。 今回はきちんとWEBrickでテストしたが、そちらではエラーは一切発生しない。FastCGIを使ったRailsのホスティングは言うほど安定していないようでこ…

DEPRECATION WARNING

先日のエントリで書いたIISサイト/マルチアプリケーションとRailsのURL(その2)の設定で書いた、以下の行をconfigenvironment.rbに書く方法だが、 ActionController::AbstractRequest.relative_url_root = "/addressbook" その後、Railsのログで以下の警告が…