ruby
25日土曜日に福岡Rubyコンテンツセンターで久しぶりのRBCの勉強会が開かれました。福岡CSKさんのご協力で開発中の製品を使わせて頂きました。 http://enzi.cc/この製品の説明は上のサイトにお任せするとして、僕個人的にはハードウェアを触るのは20年ぶりで…
rails_adminのテストを動かそうと思ってbundle installしたらエラーになった。 Installing linecache19 (0.5.12) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. (中略) Requesting http://ftp…
もちろんWin32 OLEとかを使う方法もあるけど、それ以外にもいろいろライブラリはある。 https://rubygems.org/search?utf8=%E2%9C%93&query=excel先頭のparseexcelは今はspreadsheetになっている。 gem xlsx? 書き込み? 備考 spreadsheet NG OK 読み書きで…
古い作り方のまんまになっているgem(rubeus)をbundlerを使う形にしようとして、まずGemfileを作ってrakeしたらこんなエラーが。 $ rake rake aborted! Don't know how to build task 'check_dependencies'ぐぐってもよく分からないのでjewelerのソースコード…
昨日ログを出力するように変更したrailsを使って、ほとんど素のrails3のアプリでサーバの起動、GETリクエストx3、サーバの停止までにActionDispatch::Reloaderの各メソッドがどのように呼びだされるのか、developmentとproductionの場合それぞれについて出力…
だんだん、ソースコードを読むだけではしんどくなってきたので、ちょっとずるをします。先日rails new --devの使い方を書きましたが、 http://d.hatena.ne.jp/akm/20120110#1326216516railsの調査用のコードを入れまくって、ブログに書こうとおもって、fork…
昨日は、ActionDispatch::Reloader で使われている ActiveSupport::Callbacks のドキュメントを読みました。今日はそれが ActionDispatch::Reloader でどう使われているのかを追いかけたいと思います。 https://github.com/rails/rails/blob/3-1-stable/acti…
昨日はRails::Applicationの継承関係をはっきりさせて、初期化のあたりをどうなっているのかRails Guideのドキュメントをみつけてわーいってところまで行きました。 Rails::Railtie <|---- Rails::Engine <|---- Rails::Applicationhttp://guides.rubyonrail…
Railsのdevelopmentモードのように特定のディレクトリ以下のソースコードを適切なタイミングで読み直す機能を作りたいのですが、実際Railsって何やっているのか分からんので調べます。 cache_classes railsアプリの config/environments/development.rb には…
以下の2つのgemにちょっとした変更を加えました。 https://github.com/akm/selectable_attr https://github.com/akm/selectable_attr_railsそれに伴って、どんな環境で動くのかはっきりさせようと思い、昔ちらっと記事 http://mochizblog.heroku.com/21 を…
I18nモジュールのtranslateメソッドは、訳が見つからない場合 I18n.t(:foo) #=> "translation missing: en.foo" こんな感じの文字列を返します。でもそんなん欲しくない場合とかに、i18n-0.6.0では、それぞれのメソッド呼び出しごとに:exception_handlerオプ…
RUBY_DESCRIPTION #=> "ruby 1.9.2p274 (2011-06-06 revision 31932) [x86_64-darwin10.7.0]" ! :foo #=> false :foo.! #=> false Symbol.class_eval{ def !; :"!#{self}"; end; } #=> nil :foo.! #=> :"!foo" ! :foo #=> :"!foo"
Railscasts #186 で紹介されているpickleが素晴らしい http://railscasts.com/episodes/186-pickle-with-cucumberこんな風にモデルのデータを定義できたりする https://github.com/akm/pickle_sandbox/blob/master/features/display_products.feature Featur…
VMware Fusion2で RedHat Enterprise Linux 5(64bit) を選んでisoからインストール。 ユーザー作ってsudoで権限を与えて以下のコマンド実行。 3 sudo yum groupinstall 'Development Tools' 4 yum search openssl 5 sudo yum install readline-devel openssl…
今日のメモ httpclientでアップロード http://q.hatena.ne.jp/1214807688アップロードを受け付ける書き方 http://yusukezzz.net/blog/archives/1388アップロードのテストの書き方 https://github.com/brynary/rack-test/blob/master/spec/rack/test/multipar…
Rack::Utils.status_code(:unprocessable_entity) # => 422 Rack::Utils::HTTP_STATUS_CODES[403] # => "Forbidden"
Rubyのシンタックスをパースして、構文木をいじってソースコードを編集するために作ってみました。 https://github.com/akm/yard_ast_editableYARD::Parser::Ruby::RubyParserが良さげだったので、YARD::Parser::Ruby::AstNodeを拡張して、find_by_ident と …
http://ujihisa.blogspot.com/2009/07/parsers-around-ruby.html の記事の最後にあったので、あんまり期待してないで調べはじめたら、これgemとかじゃなくて、1.9系からの標準添付ライブラリなのね。ちょっとテンション高めで使ってみたらいけました!コメン…
ruby-1.9.2では動かなかったので、1.8.7で。やっぱりコメント取れなかった。 require 'parse_tree' #=> true sexp_array = ParseTree.translate("1+1") #=> [:call, [:lit, 1], :+, [:array, [:lit, 1]]] lines = <<EOS # AAAAAA def foo(*args) puts args.inspect end EOS #=> " # AAAAAA\n def foo(*args)\n puts args</eos>…
rubynodeは古かった。探してみたら、まとめサイト発見。 http://ujihisa.blogspot.com/2009/07/parsers-around-ruby.htmlruby_parserというまんまな名前のものが見つかった。 http://parsetree.rubyforge.org/ruby_parser/ruby-1.9.2で試してみた。 require …
rubyの構文、特にコメントを解析したくなってrubynodeというgemを見つけました。最後のメンテが2年前だけど。 http://rubynode.rubyforge.org/ruby-1.8.6-p399で確認しました。 require "rubynode" #=> false code = <<EOS #aaaaaaaaaa # bbbbbb def foo puts "AAA" end def bar(*args) puts args.inspect end EOS #=> " #aaaaaaaaaa\n # bbbbbb\n def foo\</eos>…
2009/01くらいから自作のgemの管理にはjewelerを使ってきたのですが、この度selectable_attrのruby-1.9.2対応をするのを景気にbundlerを使うようにしてみました。結果、とてもいい感じなので今後はbundlerへどんどん乗り換えたいと思います。 動機 gemの開発…
RUBY_VERSION #=> "1.8.7" {:a => 1, :b => nil, :c => "a"}.delete_if{|k,v| v.nil?} #=> {:a=>1, :c=>"a"} {:a => 1, :b => nil, :c => "a"}.delete_if{|(k,v)| v.nil?} #=> {:a=>1, :c=>"a"} RUBY_VERSION #=> "1.9.2" {:a => 1, :b => nil, :c => "a"}.d…
http://github.com/akm/selectable_attr_railsselectable_attr( http://github.com/akm/selectable_attr )をrailsで使うためのgemであるselectable_attr_railsがじつはruby-1.9系で動いていなかったので、動くようにしました。最近、ちゃんとメンテできてい…
で、 with(hash_including(:key => an_instance_of(String))) って書けることに気付いた。嬉しい。
RubyのRangeだけではちょっと面倒な部分を簡単に書けるようなDSLを作ってみました。 http://github.com/akm/range_dsl/ 作った動機 数値の範囲を示すRangeオブジェクトを幾つか作ったり、どこからか取得できるような仕組みを作っておいて、合致した条件オブ…
っていうものを作りました。http://gist.github.com/358709 作った動機 Hashをeachで繰り返すときにキーで順序を指定したい、というのはたまにありますが、出力したい順序が決まっている場合もある。例えば、赤、青、黄色という順番で出力したいとか。 color…
先週0.1.0をリリースしてたんですが、時間がなくて書けなかったので、改めてご紹介。warekkyは和暦と西暦を相互変換するライブラリです。 インストールと使い方 gemでインストールして、requireするだけっす。 $ (sudo) gem install warekky $ irb require '…
jewelerを使うと、specを使うテストまでを含めたひな形を作って、git initからコミットまでしてくれて、githubへのpushまでやってくれる。 $ jeweler warekky --directory ./warekky --rspec --github-username akm --create-repo create .gitignore create …
タイムアウトするまでの時間を指定したくなった。でもどこで設定していいのかわからない。Rubyのクラスの構造を逆ツリーで出力するスクリプトを以前書いたので、それを使って調べてみる。 http://gist.github.com/11849 $ irb -rubygems # クラス構造を調べ…