リソースにカスタムアクションを追加する方法のメモ
Merbでconfig/rou
1 resource :users, 2 :collection=> {:active => :get}, 3 :member => {:password => :get}
:collectio
:memberで指定したアクションは、resource(@user, :password) などのように参照できて、"/users/1/p
Merbでconfig/rou
1 resource :users, 2 :collection=> {:active => :get}, 3 :member => {:password => :get}
:collectio
:memberで指定したアクションは、resource(@user, :password) などのように参照できて、"/users/1/p
GAEを使う上での大きな制限として、ファイル数1000までというのがあります。 これを乗り越えるために、unpackしたGemの中から不要なファイルを掃除したりする必要があったのですが、 関連するGem群をjarファイルにまとめる事でこの問題を乗り越えられます。
上記のファイルをlibの下に配置して、config/ini
実際に以下のサイトでmerb.jarを使って運用しています。
これによって、事実上ファイル数制限に左右されずにアプリケーションを開発する事が出来るようになります。 ただ、1ファイルのサイズ制限(10MB)が存在するので、jarファイルが大きくなりすぎた場合は分割する必要があります。
JRubyを使っていて、JavaのArrayListを作りたい場合には、以下のようにすると良いようです。
1 java.util.Arrays.as_list([1,2].to_java).getClass.to_s 2 # => "class java.util.Arrays$ArrayList"
DataMapper
今回のリリースで以下のような機能がサポートされます。
1 Post.all(:id => [1,2,3])
1 Post.all(:updated_at.not => nil) 2 Post.all(:id.not => 3)
DataMapper
デモサイトであるWatchMe!もアップデートしています。
まだ実用的なサービスになってないですが、登録したサイトをクローリングして全てのページの監視を行い、エラーが発生したらメールで知らせるサービスになる予定です。
Rakeでnamespaceなどを使った場合に、Rubyのシンボルをネストさせたい時があるのですが、
1 task :foo => :"bar:baz"
のように書くのが、DSL的にちょっとかっこうわるいです。 そこで、以下のようなものがあればちょっと奇麗に書けます。
1 class Symbol 2 def method_missing(method, *args, &block) 3 if args.empty? && block.nil? 4 [self, method].join(':').intern 5 else 6 super 7 end 8 end 9 end 10 11 >> :foo #=> :foo 12 >> :foo.bar #=> :"foo:bar" 13 >> :foo.bar.baz #=> :"foo:bar:ba z"
いかがでしょう。
GAE/Jにはファイル数制限(1000まで)があるので、なるべく不要なファイルは減らしたいのが人情というものです。 ということで、unpackしたgemsから不要なファイルを掃除するために、以下のようなスクリプトを使用しています。
script/str
1 #!/usr/bin/env ruby 2 3 Dir['gems/gems/ *'].each do |dir| 4 %w( 5 Generaters TODO README.* README 6 spec/**/* test/**/* examples/**/* tasks/**/* 7 tutorial/**/* demo/**/* 8 CHANGES CHANGES.tx t CHANGELOG 9 LICENSE MIT-LICENS E Rakefile CONTRIBUTO RS 10 Manifest.t xt History.tx t install.rb setup.rb 11 ).each do |pattern| 12 Dir[File.join(dir, pattern)].each do |path| 13 command = "rm -rf #{path}" 14 puts command 15 system command 16 end 17 end 18 end
Gemの中に含まれているファイルには制約が無いので、 簡単なパターンで全てを掃除するのは難しいですね。
非常にシンプルなのですが、毎回GlobalHelp
http://git
インストール方法
1 % sudo gem install merb_gravatar
使用法
dependency
1 <%= gravatar @user.mail, 16 %>
第二引数はアイコンのサイズを1~80で指定します。省略すると80が選ばれます。
例
GAE/Jでも使えます(See http://wat
dependency
1 module DataObjects 2 3 class Transactio n 4 HOST = "#{Socket::gethostbyn ame(Socket::gethostnam e)[0]}" rescue "localhost"
Socket::ge
一人で長距離を走るのが暇なので、 走っている間に会話ができる仲間を求めてはじめた MerbJog ですが、 勉強会系イベントの手法として優れた特性を持っている事が分かったので 開催する上でのポイントなどをまとめておきます。
特長
短所
開催上のポイント
See Also
DataMapper
これを使えば、MerbアプリをほぼそのままGoogle App Engine for Javaの上で動かせるようになります。 (実際にはgemの依存関係など、細かい調整が必要になりますが)
実際に以下のサイトでdm-datasto
ローカル環境でも別なアダプタを利用すれば、普通のMerbアプリとして動作テストできるので、開発効率が飛躍的に向上します。