ウェブサービスを作っています。

2012-01-01から1年間の記事一覧

capybara-webkit を debian の CI サーバで動かす (headless)

まず、Qt と xvfb を入れます。 sudo aptitude install libqt4-dev xvfb Gemfile に、headless gem を追加します。 group :test do ... gem 'capybara' gem 'database_cleaner' gem 'launchy' gem 'capybara-webkit' gem 'headless' ... end spec/spec_helpe…

Paperclip でユーザが画像をアップロード

ImageMagick 系のエラーを表示しない 画像以外のファイルをアップロードされたらエラーを表示する 最大サイズを 5MB に制限 という場合です。content_type はこれでいいのか、ちょっと自信がありません。 has_attached_file :photo, whiny: false # whiny: f…

SSSSLIDE にスライド検索機能がつきました

SlideShare や Speaker Deck のスライドを、縦に並べて表示する「SSSSLIDE」というサービスをやっています。 このたびリニューアルし、スライド検索機能を追加しました。 SSSSLIDE Twitter でつぶやかれたことのある、日本語スライドを中心に検索できます。 …

運用のための Sunspot 設定

Ruby on Rails で Solr による検索を行う Sunspot に関して、私が運用上設定している内容を公開します。 config/sunspot.yml の設定 Sunspot (v1.3.3 現在) では、ジョブやタスクでインデックスを追加・更新した場合、自動でコミットが行われません。 そのた…

rake "sunspot:solr:reindex[,Model]" ではなく rake "sunspot:reindex[,Model]"

Sunspot (v1.3.0) で特定のモデルを再インデックスする場合、 rake "sunspot:solr:reindex[,Model]" としろと README に書いてあるのですけれど、これだと [,Model] の設定が無視されるようです。 rake "sunspot:reindex[,Model]" なら大丈夫です。 関連 URL…

bundle exec と打たなくても済むようにする

~/.zshrc などに export PATH=./bin:$PATH を追記し、bundle install を binstubs オプション付きで実行。 最小限パターン % bundle install --binstubs rbenv を使っているとき % bundle install --binstubs --shebang ruby-local-exec rbenv 使用 + vendor…

perform の引数を破壊的に変更していると resque-retry の挙動がおかしい

Resque のプラグインで、Delayed::Job のように自動リトライをしてくれる resque-retry というものがあります。で、 Resque::Failure::MultipleWithRetrySuppression.classes = [Resque::Failure::Redis] Resque::Failure.backend = Resque::Failure::Multip…

スライドを縦に並べて表示する「SSSSLIDE」というサービスを作りました

SlideShare や Speaker Deck のスライドを、縦に並べて表示する「SSSSLIDE」というサービスを作りました。 SSSSLIDE SlideShare や Speaker Deck は大変素晴らしいサイトだと思うのですが、1 ページごとにポチポチとクリックする必要があり、ちょっと不便で…

ActsAsDigestedOn を Rails3 に対応

acts_as_digested_on という gem を 3 年前に作ったのですが、Rails 3.1 から動かなくなっていたので修正しました。 モデルに 1 行追加するだけで、SHA1 ハッシュを自動でカラムに保存するというものです。 https://rubygems.org/gems/acts_as_digested_on h…

URI のクエリを書き換える

Addressable::URI を使うと、割ときれいに書ける気がします。忘れるのでメモ。 require 'addressable/uri' uri = Addressable::URI.parse('http://example.com').normalize uri.query_values = (uri.query_values or {}).merge('a' => '2') uri.to_s # => "h…