タグ

ブックマーク / www.techscore.com (4)

  • Ruby/Railsでロックファイルによる排他制御 | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 バッチ処理を作成する時に、気を付けなければならないことの一つに、排他制御があります。 排他制御を行なう方法はいくつかありますが、今回はロックファイルによる排他制御を行なうコードを考えます。 排他制御を忘れると 排他制御を忘れていると、 cron で定期的にパッチ処理を起動するように設定した。 前回起動されたバッチ処理がまだ終了していなかったので重複して起動された。 そんな状況は考慮していなかったので、バッチ処理中にエラーが発生した。データ不整合が発生した。 といったことになりかねません。 ロックファイルによる排他制御とは、以下のような手順で排他的に処理を実行する方法のことを言います。 バッチ処理の最初にファイルをロックする。( File#flock() を使用します ) ロックに失敗したら、処理を終了する。( or ロックが取得できるまで待機する ) 来の処理を実

  • Railsのコールバックまとめ | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 Techscore 体の記事の下書きを書き進めています。 ということで、コールバックの記事の下書きを公開します。 コールバックの種類 コールバックとは、バリデーションの実行やデータベースへの保存などのタイミングで処理を行うための機能です。 あるタイミングで必ず実行する必要がある処理をコールバックに指定することで、モデルの一貫性を保つことができます。 Rails のコールバックの種類をまとめてみると、非常に多いことが分かります。 after_find 検索メソッドでオブジェクトが見つかったタイミングで実行されます。 検索条件を指定せずに all メソッドを呼び出すなど、検索結果が大量になる場合は注意が必要です。 検索結果の数だけコールバックが実行されますので、パフォーマンスに重大な影響を及ぼす可能性があります。 after_initialize オブジェクトがインス

  • ActiveSupportを読む: ActiveSupport::Concern | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 先日、「ActiveSupport::Concern でハッピーなモジュールライフを送る」で ActiveSupport::Concern をご紹介しましたが、きっと裏側では色々なテクニックが使われているのではないでしょうか。 ということで ActiveSupport::Concern が裏側でどのような処理を行なっているのか、ActiveSupport::Concern のコードを読んでみます! ActiveSupport::Concern のコードを読む ソースコードはこのようになっていました。 module ActiveSupport ... module Concern def self.extended(base) base.instance_variable_set("@_dependencies", []) end def append_feature

  • Railsで複数のデータベースを使用する | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 Ruby on Rails で複数のデータベースを扱う方法をご紹介します。 establish_connection establish_connection はデータベースと接続するためのメソッドです。 通常は明示的に呼び出すことはありませんが、複数のデータベースを使用する場合は、以下のように明示的に呼び出す必要があります。 class User < ActiveRecord::Base establish_connection :adapter => 'postgresql', :encoding => 'unicode', :database => 'other_database', :pool => '5', :username => 'USERNAME', :password => 'PASSWORD', :host => 'localhost' end

    larker
    larker 2013/10/03
    複数DBの指定の仕方
  • 1