Linux-Java-Memo.com

金曜日 11 26, 2010

メモ: railsでのセッション管理について

railsでは2.0以降、セッションはデフォルトでcookie内にすべて格納するらしい。
これだと4kバイトの容量制限はあるが、セッションタイムアウトとか、負荷分散時のセッション情報の共有とか気にしなくてよい。
DBストアも選択出来る。これだと容量制限も気にしなくてよくなる。性能はどうなんだろうか。

月曜日 11 15, 2010

rails 3 メモ: productionのサーバでpublicが見えない

WEB+DB PRESS Vol.58より抜粋

Rails 3では、rails sコマンドでproduction環境のサーバを起動すると、public以下のファイルやディレクトリがサーバによって提供されなくなっている。config/environments/production.rbのconfig.serve_static_assetsをtrueにすることで解決する。
Passenger経由であれば、staticなファイルはApache等が提供してくれる部分なので問題なし。

火曜日 11 02, 2010

rails 注意事項いろいろ

  • アプリケーション名とモデル名はダブるとエラー?
  • アプリケーション名に_testとか入れると、TestUnitのクラス名と衝突してエラーとなる。

rails 3 で mysqlを使ってみる

Ubuntu 9.10環境でrails3お試し中。mysqlにつないでみる。

rails new hoge --database=mysql

config/database.ymlをみると、gem install mysql2でdriverを入れろと書いてあるが、そのまま実行するとエラーとなる。 libmysqlclient15-dev パッケージが必要(Ubuntu 9.10の場合)。

aptitude install libmysqlclient15-dev
sudo gem1.8 install mysql2

今度はうまくいった。

database.ymlでencoding: eucjpmsにしてみる。→ 画面表示で文字化け発生。ActiveRecord::Baseの説明に従い、文字化けするカラムのaccessorをオーバーライトして文字変換させたところうまく動いた。

水曜日 10 27, 2010

Ruby on Rails 3

WEB+DB PRESS Vol.58 を買い、Rails 3勉強中。久しぶりに新しいもんを学んでます。

Ajax化が簡単に出来るのはすごいんだけど、データとして返ってくるJavaScriptコードがバグっててもなんのエラー表示もされないな。デバッグ厳しそう。

例えば test.js.erb とかに

$('posts').update(
  '<%= escape_javascript(render @posts) %>'
);

とか書くのだけど、ここにバグがあっても、動かないだけで、どこが悪いのかよくわかりません。

Railsなら、ここにそんなに複雑なコードを書くことは無い、ってことなのかな。


2010.11.02 追記。

なるほど。RJSを使えってことですね。

木曜日 5 20, 2010

RubyでXML処理するにはLibXML-Rubyが良い

RubyでXML処理するにはREXMLが簡単そうでいいかと思っていたのだが(標準で組み込まれているし)、なぜか外部エンティティを読み込んでくれないみたい。調べてみたが対応していないようでよくわからなかった。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hoge SYSTEM "hoge.dtd">
.... <!-- REXMLだと、hoge.dtdに記載してある情報を反映してくれない -->


仕方がないのでREXMLはあきらめて、LibXML-Rubyを使ってみた。こちらもデフォルトでは外部エンティティを読み込んでくれないが、API Docsから辿っていくとXML::Parser::Optionsで指定すれば読み込んでくれることがわかった。

doc = XML::Document.file( "hoge.xml", :options => XML::Parser::Options::NOENT|XML::Parser::Options::DTDLOAD );
このように指定すればちゃんと外部エンティティを読み込んでくれました。XPath指定など機能的にもREXMLを同じような感じで使いやすくて良いです。

月曜日 5 11, 2009

Debian/lennyで Rubyの Amrita2を動かす

  • 現時点でのAmrita2の最新版は2.0.2だが、仕様が大きく変わっており、修正困難だったため、元々利用している1.9.6を動作させた。
  • 更に現時点でAmrita2のWebサイトにはアクセス出来なくなっている。2.0.2はRubyForgeからダウンロードした。

  • Amrita2が呼んでいるREXMLライブラリがアップデートされており、Amrita2 1.9.6だと
    REXML::Text.write is deprecated.  See REXML::Formatters

と警告出力される。

  • deprecateされた為か、REXMLのelement.rbにバグがあるので修正必要。修正箇所は以下。
    *** element.rb.orig     
    --- element.rb
    ***************
    *** 671,677 ****
    # out = ''
    # doc.write( out ) #-> doc is written to the string 'out'
    # doc.write( $stdout ) #-> doc written to the console
    ! def write(writer=$stdout, indent=-1, transitive=false, ie_hack=false)
    Kernel.warn("#{self.class.name}.write is deprecated. See REXML::Formatters")
    formatter = if indent > -1
    if transitive
    --- 671,677 ----
    # out = ''
    # doc.write( out ) #-> doc is written to the string 'out'
    # doc.write( $stdout ) #-> doc written to the console
    ! def write(output=$stdout, indent=-1, transitive=false, ie_hack=false)
    Kernel.warn("#{self.class.name}.write is deprecated. See REXML::Formatters")
    formatter = if indent > -1
    if transitive

参照サイト http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/32141

  • amrita:typeオプションを指定すると、例外が発生するようになった。
    Undefined prefix amrita found (REXML::UndefinedNamespaceException)

これは、htmlタグにxmlns:amrita=http://../ でnamespaceを定義してみたところ解決。

金曜日 9 08, 2006

Amrita2


Amrita2 - Ruby用 XML/HTML テンプレートライブラリーを使ってみました。
Javaのvelocityと比べても非常にシンプルです。条件分岐とかループの処理が
無く、全てデータ形式で判断する? のは慣れないととまどいそうですが、ruby
なら便利なのかな。

金曜日 8 25, 2006

soap4r

ruby1.8の方もやっと解決。 soap4rのライブラリに含まれる、wsdl2rubyを使って生成したクラスを 使えば簡単なんですね。ここまでたどり着くのにえらい時間がかかった...。

SOAP4RでAmazon Web Service

水曜日 8 23, 2006

Rubyの正規表現


今ごろですが、
ruby 1.8と1.6では正規表現のロジックが異なるのですね。
ruby 1.6では動いていたコード

str.gsub!("-","/");
が1.8にしたら変換されない。1.8では、

str.gsub!(/-/,"/");
のように記述しないとダメなんですね。
コード全部見直さないと...。

水曜日 8 09, 2006

soap4r

ruby1.8にしたら、1.6で使っていたコードは動かないんですね?

soap4r:ja - soap4r - Trac

月曜日 7 03, 2006

はじめようRuby on Rails

はじめよう Ruby on Rails
はじめよう Ruby on Rails
posted with amazlet on 06.07.21
高橋 征義 かずひこ 喜多川 豪
アスキー (2006/07/03)

木曜日 6 22, 2006

ライド・オン・Rails

Ruby on Railsの実践的解説本、とのこと。

ライド・オン・Rails Ruby on Railsを徹底攻略
吉田 和弘 馬場 道明
ソフトバンククリエイティブ (2006/06/30)

こちらは、"Lightweight Language"なフレームワーク紹介、ということでRuby on Railsも取り上げられています。

水曜日 4 26, 2006

RadRails

Railsの統合開発環境。Eclipseのプラグインとして動作する。

RadRails - A Ruby on Rails IDE

火曜日 2 28, 2006

RubyでのSQLインジェクション対策

メモ。

  • コンパイル済みSQLを使う。
    Ruby DBIモジュールを利用すれば可能。
  • 特殊文字をエスケープ処理する。
    • ' → "
    • " → ""
    • % → \%
    • _ → \_
    • \ → \\

Calendar

tags

Feeds

Search

Links