タグ

ブックマーク / higelog.brassworks.jp (7)

  • CapistranoでWhenever - ひげろぐ

    昨日の続き。 Whenever標準でCapistranoのタスクが用意されているので、簡単に組み合わせることができる。 deploy.rbの編集 以下の行を適当な場所に挿入。例えばロールを定義している下あたりとか。 set :whenever_command, "bundle exec whenever" require "whenever/capistrano" これだけでもうcap deployすればconfig/schedule.rbの内容がCrontabに反映されるようになる。 ロールの設定 Wheneverの対象となるデフォルトのロールは:dbになっている。 必要ならば:appに変更したり、適当に:batchなどのロールを作ってdeploy.rbに書く。 set :whenever_roles, { :batch } 複数サーバーで実行されると負荷などが面倒になりそうな処理を実行

  • will_paginateに移行 - ひげろぐ

    will_paginateのアップデートによってインストール方法など一部の情報が古くなっています。 関連:will_paginateもgithubに行ってた この間Rails2.0に移行したときにいったん放置したwill_paginateへの移行を行ったのでメモ。 それほど手間ではなかった。 ぐーぐる先生が教えてくれたページやREADMEを読みつつ作業。 プラグインのインストール さくっと。 $ script/plugin install svn://errtheblog.com/svn/plugins/will_paginate コントローラの修正 以下のようにコードを修正。コメントアウトしたものは修正前のもの。 def list # @pages, @items = paginate(:items, :conditions => ["deleted = 0"], :order => '

  • nginx+UnicornでRailsのページキャッシュを使おうとしてはまった話 - ひげろぐ

    ここやここを参考に設定してみたが、nginx+Unicornの組み合わせでページキャッシュが効かなかったので、ちょっと試行錯誤。 最終的には以下を参考にしてなんとかなった。 RubyonRailsMongrel 原因 nginxがキャッシュファイルを見つけてくれなかった 状況を調べてみるとキャッシュファイル自体は作られている。 しかしRailsがキャッシュファイルを作るときにパス名に「index.html」か「.html」を付加したものをファイル名とするが、nginxはこの事情を知らないので、キャッシュファイルを見つけられなかった。 なので都度Unicornの方へリクエストを振っていた。 一方Unicornは静的ファイルへのアクセスをnginxに一任していた Rails3からはProduction環境ではデフォルトで静的ファイルへのアクセスを受け付けていない。 以下デフォルトのconfig

  • マイグレーション関連のRakeタスクの再確認 - ひげろぐ

    Rails 2.1になってマイグレーション周りで追加されたタスクや覚えておくべきタスクについての確認。 追加された db:migrate:up db:migrate:down 覚えておいた方がよくなった db:rollback db:migrate:redo db:abort_if_pending_migrations 追加された – 各マイグレーションのupとdownを任意に実行できるように 2.1からRakeタスクに「db:migrate:up」と「db:migrate:down」が追加された。 これにより各マイグレーションのupとdownが好きなタイミングで任意に実行できるようになった。 それぞれupとdownを実行したいVERSIONを指定して実行する。14桁。めんどくさくてもちゃんと指定する。指定しなくてはならない。 $ rake db:migrate:up VERSION=20

  • RailsアプリでActiveRecordを使ったバッチ処理 その2 - ひげろぐ

    script/runnerを使うといいようだ。 これは引数の文字列をRubyスクリプトとして解釈し、Rails環境で実行するというもの。 script/runnerによって ruby script/runner 'p Onsen.count' といった具合にコマンドラインからモデルを使った処理を実行できる。 コントローラは使えません。(でした) 対象にする環境は-eオプションを使ってdevelopment,production,testをそれぞれ指定できる。 何も指定しない場合のデフォルトはdevelopment。 ゆえにproduction環境で実行したければ以下のごとし。 ruby script/runner -e production 'p Onsen.count' ちなみに多少複雑なバッチ処理は当然ファイルに書いたスクリプトから読ませたい。 しかしそのために普通にパイプとか使っても

  • WheneverでRailsのバッチ処理 - ひげろぐ

    WheneverはCronを利用して繰り返し処理を行うためのライブラリ。 シェルコマンドやRailsのRunner、RakeタスクなどのジョブをCronで実行できる。 実際のところCrontabへの登録を補助してくれるだけなのだが、そのシンプルさがかえって分かりやすい。 バッチ処理の管理にうってつけ。 タイトルではRailsとなっているがRails以外でも利用できる。 以下はRails3での使い方メモ。 導入 Gemfileに以下の行を追加してbundle install gem 'whenever', :require => false schedule.rbの編集 config/schedule.rbにスケジュール設定を書いていく。 bundle exec wheneverize . を実行するとひな形を作ってくれるので、それを元に編集していくのが吉。 スケジュールは「every」に続

  • Rails3でTDD環境を整えたメモ - ひげろぐ

    2011/07/07追記 実はこの記事の内容よりも以下のGuardを前提にした構築がおすすめ。 Rails3+RSpec2+Spork+Guard(guard-rspec,guard-cucumber)で最速のBDD(振舞駆動開発)環境を作る | Curiosity Drives Me Guard便利すぎです。 久々にRailsでできる仕事が来たので久々に環境構築。 記事の一番最後に挙げた参考の渡り歩きつつ設定した。 Rubyのバージョンは1.9.2。Railsは3.0.5。 プロジェクトの作成 $ rails new -T hoge RSpecを使うのでUnitTestはいらないということで。 Gemfile 必要なものをBundlerでさくっと入れる。 group :development, :test do gem 'spork', '~> 0.9.0.rc' gem 'rspec-

  • 1