ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

Ruby

JRubyで改行コードがCRLFのファイルを入力するとERBの-%が効かない

ようです。LFで保存しましょう。 あんまり関係ないですが、-%使おうと思ったときに出たエラー。 E:/jruby-1.1.4/lib/ruby/1.8/erb.rb:743:in `binding': (erb):2: , unexpected ';' ( SyntaxError) from testerb.rb:9:in `eval' from E:/jruby-1.1.4/lib/rub…

CSVファイルでもDynamic Fixturesが使えるのか(結論: fixtures.rbにパッチを当てれば使える)

Class: FixturesのDynamic fixtures with ERbの節に、 In these cases, you can mix ERb in with your YAML or CSV fixtures to create a bunch of fixtures for load testing とか書いてあるので、YAMLだけじゃなくて、CSVでもDynamic Fixturesが使えそうな…

JavaからRubyを呼んで、戻り値を取得する

evalScriptletの戻り値を使えば良かったらしい。そのまんまじゃん。 import org.jruby.Ruby; import org.jruby.runtime.builtin.IRubyObject; public class CallRuby { public static void main(String[] args) throws Exception { Ruby runtime = Ruby.newI…

JavaからFixturesを使ってみる - ちょっとだけすっきり書けた

import java.io.FileInputStream; import org.jruby.Ruby; import org.jruby.runtime.Block; public class CallRuby { public static void main(String[] args) throws Exception { Ruby runtime = Ruby.newInstance(); runtime.parseFile( new FileInputStr…

JavaからFixturesを使ってみる

昨日のFixturesをRails外で使ってみるは、これの伏線なのでした。 で、JavaからJRubyを使ってRubyのライブラリを使う方法ですが、 色々やったところ、org.jruby.Ruby#evalScriptletってのを使うとできるようです。 org.jruby.runtime.load.LoadService#requi…

FixturesをRails外で使ってみる

思いっきりActiveRecord依存なんですね。 hoge.rb data people.yml hoge (derbydb) まずはpeople.yml first: id: 1 name: test second: id: 2 name: hoge <% 10.times do |i| %> loop<%= i %>: id: <%= (i+3) %> name: <%= "hoge#{i}" %> <% end %>次にフィ…

JRuby on Rails + ActiveRecord-JDBC with derbyを試してみる

前提 Java6 SDKがインストールされている JRuby1.1.4がインストールされている 適切な環境設定(JAVA_HOME, JRUBY_HOME, PATH)がされている Rails2.1.1がインストールされている とりあえずRailsプロジェクトを作ってみる D:\work\ruby\ActiveRecord-JDBC>jru…

warblerでRailsアプリをTomcatにのせてみる

前提 TOMCATがインストールされている(zipとか展開するだけですが) 参考URL http://blogs.sun.com/arungupta/entry/rails_and_java_ee_integration1 warblerをインストール D:\work\ruby\ActiveRecord-JDBC\test>jruby -S gem install warbler JRuby limited…

POI Ruby Bindingsってのがあるらしい。

CRubyから直接POIをたたけるライブラリのようです。 が、TODOが山積しているようで、なんかあんまりメンテされてなさそう。。ちょっと興味深いのは、 The bindings are generated by compiling POI with gcj, and generating the Ruby wrapper using SWIG. …

JRuby on Rails with mysqlでEMULTIHOP (Reserved)とかいうエラーが出る件

http://juskewycz.com/2008/05/rails-mysql-ubuntu-socket/#comment-119 のサイトに解決策が載ってました。 要は、config/database.ymlで、 socketの行(socket: /var/run/mysqld/mysqld.sockとか書いてある行)を消す(コメントアウトする) host: 127.0.0.1の…

indexアクションをCSVやExcel(JRuby + POI)に対応してみる

scaffoldで作った場合、デフォルトではHTMLとXMLに対応していますが、これをCSVとかExcelに対応してみようというものです。まず事前準備として、.csvや.xlsといった拡張子に反応するよう、config/environment.rbに登録します。 ... # Activate observers tha…

POI on JRuby

とりあえずやってみました。 普通に書いたバージョン IOをOutputStreamでラッパしたバージョン(writeメソッドの書きっぷりが不完全ですが) ioに書けるってことは、他のRubyライブラリとの整合性も取れそうな気がします。

rubeus-0.0.6 released!

きましたー! 今回から私が書いたコードが少し入ってます。rubeusは今までも少し言及してきましたが、 Rubeus(るびうす)はJRubyを使ってJavaのAPIをRubyっぽくしちゃえというコンセプトで立ち上がったプロジェクトです。JRuby上では、Rubyのスクリプトからと…

(擬似)リアルタイムなRSSリーダー

そんなの作るとネットワークとかサーバに負荷かかるからやめとけっていう話はもちろんありますが、それはさておき。最近RBCな人達の間で、JRuby + rubeusでRIAなSwingアプリを作るのが流行ってます。 RubyのNet::HTTPでさくっとデータを取ってきて、それをSw…

ブロックの内容をメソッドとして持ったオブジェクトを作るメソッド

関数を渡すと、それを持ったオブジェクトが返ってくるわけです。 Rubyってめちゃくちゃ柔軟。素晴らしい。 # 受け取ったブロックをhogeメソッドとして実装したオブジェクトを返す def test(&block) # 受け取ったブロックをhogeメソッドとして実装したModule…

イケテルJRuby勉強会@東京

ただいま参加中です。 なんとIP Reachableなんです。素晴らしい。 とても寒いです。。orz 今朝帰りました。とても眠いです。 いくら寝ても寝たりないんです。。 風邪は今のところひいてないらしい。でも潜伏期間3日くらいだからなあ。 それはさておき、勉強…

RSSフィードを追加してみる。

http://d.hatena.ne.jp/taka_2/20080521#p1 で、RSSサポートやるかも。とか書いたのでやってみる。 RSSを扱うためのライブラリはRubyに添付されているので、それを使う。 http://doc.loveruby.net/refm/api/view/library/rss ちなみに、RSSの仕様は単純っぽ…

「RailsによるアジャイルWebアプリケーション開発」27章読了

本番環境への配備のお話し。 capistranoで色々ハマったので、メモっておく。 cap --apply-toが使えない件 なんかもうオプションとか変わってるみたい。 http://www.tkrb.jp/guide/2008/02/capistrano_rails.html 辺りを参考にしました。 Subversion久しぶり…

「RailsによるアジャイルWebアプリケーション開発」26章読了

SQLインジェクション 定義済みメソッド(findなど)やバインド変数を使っていれば問題ないというお話しです。 試しに問題となるコードと、簡単な攻撃を行ってみたいと思います。 まずはコントローラ。 app/controllers/products_controller.rb def sql_injecti…

「RailsによるアジャイルWebアプリケーション開発」25章読了

AWS(Action Web Service; Amazon Web Serviceではないことに注意(汗))に関する章。 が、冒頭に この章は静かな論争の的になっています。RailsがRESTをサポートするようになり、コアチームはXML-RPCベースやSOAPベースのWebサービスにいままでほど興味を持た…

「RailsによるアジャイルWebアプリケーション開発」読了

RailsによるアジャイルWebアプリケーション開発 第2版作者: Dave Thomas,David Heinemeier Hansson,Leon Breedt,Mike Clark,Andreas Schwarz,James Duncan Davidson,Justin Gehtland,前田修吾出版社/メーカー: オーム社発売日: 2007/10/26メディア: 大型本購…

「RailsによるアジャイルWebアプリケーション開発」24章読了

Action Mailerのお話し。 とりあえずメールを送ってみる。 サンプルとして、SMTPによるメール送信を試みる。 サーバはこういう時に僕がいつも使っているJamesを利用。(Jamesの設定は割愛します。どこかに載ってますので。) まずは、SMTPの設定。 config/envi…

「RailsによるアジャイルWebアプリケーション開発」23章読了

Web2.0と題して、Prototype、Script.aculo.us、RJSテンプレートが取り上げられています。 Ajaxでdiv要素の更新 ページ中のpタグで囲ったところだけ、Ajaxで更新するというサンプルです。 ここでは、四つの方法で実現してみました。 ハイパーリンクをクリック…

「RailsによるアジャイルWebアプリケーション開発」22章読了

Action Viewなお話し。 Builderライブラリを使ってHTMLを構築する(ほぼ意味なし) products_controller.rbに以下のようなアクションを追加する。 def builder_test @products = Product.find(:all) end で、app/views/products/builder_test.rxmlを作成する x…

「RailsによるアジャイルWebアプリケーション開発」21章読了

aroundフィルタでアクションにかかった時間を計測する products_controller.rbに以下のコードを追加。 around_filter :time_an_action def time_an_action started = Time.now yield elapsed = Time.now - started logger.info("#{action_name}は#{elapsed}…

「RailsによるアジャイルWebアプリケーション開発」21章読み中

ActionControllerの続き。 コントローラクラス内のpublicメソッドをactionとして使わない方法。 通常であれば、privateメソッド、もしくは、protectedメソッドとして隠します。 private # DELETE /products/1 # DELETE /products/1.xml def destroy @product…

「RailsによるアジャイルWebアプリケーション開発」20章読了

ルート付きURL 同一(サブ)ドメイン内で、複数のRailsアプリケーションを起動させるときに、それぞれのアプリケーションを識別するため、 http://hoge.com/test/products http://hoge.com/test2/products みたいにパスを変えることで対応するもの。 試しに…

「RailsによるアジャイルWebアプリケーション開発」20章読み中

この章はActionControllerのお話し。 ルーティング ルーティングは、URIとHTTPメソッドの組み合わせに対し、どのコントローラとアクションが使われるかを決めるもの。 ActionController::Routing::Routesのroutesメソッドを使うと、ルーティング一覧を表示で…

「RailsによるアジャイルWebアプリケーション開発」19章まで読了

トランザクションのお話。本書中では、一テーブルに対するトランザクション(よくある残高の問題)の例だったのですが、1トランザクション内での複数テーブルへの同時更新というのも良くある話なので、こちらをサンプルとして実装することにしました。 例とし…

「RailsによるアジャイルWebアプリケーション開発」19章読み中

集中力が続かないので、またも途中でブログに書いてしまう。19章は、Active Recordその3 検証その他に関するお話。 データベースに保存する前にモデルを検証する valid?を呼ぶ。サンプルコード。 require 'rubygems' require 'activerecord' ActiveRecord::B…