タグ

ブックマーク / techracho.bpsinc.jp (7)

  • Rails: Puma/Unicorn/Passengerの効率を最大化する設定(翻訳)|TechRacho by BPS株式会社

    まとめ: アプリのサーバー設定はRuby Webアプリのスループットやコストあたりのパフォーマンスに大きな影響を与えます。設定の中でも最も重要なものについて解説します(2846 word、13分) RubyのWebアプリサーバーは、ある意味で自動車のガソリンに似ています。よいものを使ってもそれ以上速くなりませんが、粗悪なものを使えば止まってしまいます。実際にはアプリサーバーでアプリを著しく高速化することはできません。どのサーバーもだいたい同じようなものであり、取っ替え引っ替えしたところでスループットやレスポンスタイムが向上するわけではありません。しかしダメな設定を使ったりサーバーで設定ミスしたりすれば、たちまち自分の足を撃ち抜く結果になります。クライアントのアプリでよく見かける問題のひとつがこれです。 記事では、3つの主要なRuby アプリサーバーであるPuma、Unicorn、Pass

    Rails: Puma/Unicorn/Passengerの効率を最大化する設定(翻訳)|TechRacho by BPS株式会社
  • Unicornがどれくらい仕事してるかさくっと調べる|TechRacho by BPS株式会社

    Unicornのワーカー数を増やすべきか考えるために、今いくつのワーカーがリクエストを捌いているのかさくっと調べたいことがあると思います。 Passengerだとpassenger-statusコマンドが標準で付いていて便利なのですが、Unicornではそうもいきません。 今知りたい場合 たとえば以下のような1行コマンドで調べられます。 ps l --ppid=`cat /path/to/rails/tmp/pids/unicorn.pid` | \ awk "{ print \$10}" | grep R | wc -l これは、masterプロセスの子プロセスを一覧してステータスがTASK_RUNNINGのものを数えているだけです。 多少雑ですが、watchで数秒おきに見ておけば、負荷状況がざっくりとわかります。 muninで監視する場合 これだけだと短いので、muninで監視する設定

    Unicornがどれくらい仕事してるかさくっと調べる|TechRacho by BPS株式会社
  • Rails 4.0を使ってみよう – その2 ActiveRecordの使い方|TechRacho by BPS株式会社

    Rails4では、ActiveRecord周りの書き方に何点か変更が入っています。 普通にWebアプリを作る際には、もっともわかりやすい変更点の1つですね。 ActiveRecord::Modelのinclude 従来、モデルを定義するには class User < ActiveRecord::Base end としていました。 Rails4では、 class User include ActiveRecord::Model end という書き方ができます。別クラスを継承させることができるのが大きなメリットです。 影響範囲が広く(ActiveRecord::Baseを拡張するライブラリが多いため)、ひょっとしたら4.1などで更に方針が変わる可能性もありますが、ActiveRecord::Baseに依存した書き方をしないように気をつける必要があります。 find_by_*の廃止 find_b

    snomof
    snomof 2014/11/11
    scopeはlambda必須に
  • [Rails] memcache-clientやdalliでfork後のresetは大切|TechRacho by BPS株式会社

    Railssession_storeやcache_storeとして、memcachedを使うことはよくあると思います。 今回は、memcachedのRuby用クライアントgem, memcache-clientやdalliにて、Passengerやunicornのfork後の初期化をきちんと書かないと、悲惨なことになるというお話です。 ※他のgemやmemcached以外でも当てはまります。 必要な初期化処理 以下の処理を、config/environments/production.rbや、config/initializers/session_store.rbなど、どこでも良いので初期化コードに書いておく必要があります。 dalliを利用している場合 https://github.com/mdesjardins/dalli/tree/ # passengerの場合 if define

    [Rails] memcache-clientやdalliでfork後のresetは大切|TechRacho by BPS株式会社
    snomof
    snomof 2014/09/09
    現在では直ってる / Detect and handle sockets shared by processes · Issue #208 · mperham/dalli https://github.com/mperham/dalli/issues/208
  • Ruby 2.1.0リリース!注目の新機能を見てみましょう|TechRacho by BPS株式会社

    2013年12月25日。おめでとうございます、Ruby 2.1.0がリリースされました! 日時間で26日という細かい突っ込みをしている場合ではありません。 まだ使ったことがない方、簡単に変更点を見てみましょう。 文法の変更 デフォルト値を伴わないキーワード引数 Ruby 2.0が出たときから誰もが思っていた疑問、「なんでキーワード引数はデフォルト値必須なんだ?」がついに解消されました。以下の記法で、デフォルト値をつけないキーワード引数を宣言できます。この場合、呼び出し時に対応する実引数を渡さないとArgumentErrorになります。 def hello(name: ) puts name end hello(name: "taro") # => taro hello # => ArgumentError: missing keyword: name キーワード引数同士ではデフォルト引数

    Ruby 2.1.0リリース!注目の新機能を見てみましょう|TechRacho by BPS株式会社
    snomof
    snomof 2013/12/26
    [ruby2.1
  • 肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)

    更新情報: 2013/11/19: 初版公開 2021/01/08: 訳文見直し、追記 こんにちは、hachi8833です。今回は、自分が知りたかった、Active Recordモデルのリファクタリングに関する記事を翻訳いたしました。1年前の記事なのでRails 3が前提ですが、Rails 4以降でも基的には変わらないと思います。リンクは可能なものについては日語のものに置き換えています。 なお、ここでご紹介したオブジェクトは、app以下にそれぞれ以下のようにフォルダを追加してそこに配置します。 注記: 以下は使われそうなフォルダを列挙しただけであり、実際にはこの一部しか使いません。 Value Object Service Object Form Object Query Object View Object Policy Object Decorator ⚓ 肥大化したActive

    肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)
  • Rails 3&4: Arel::Tableを使ってなるべく生のSQLを書かずに済ます方法|TechRacho by BPS株式会社

    Railsでプログラムを書いるとSQLを直接記述する機会が意外と多いので、 なるべくRubyらしく書く方法がないか調べてみました。 ORなどかなり基的な構文でもarel_tableを使う必要があるのですね。 というわけで、Arel::Table を使ってみました。 動作確認環境は以下の通りです。 ruby: 1.9.3-p392 Rails: 3.2.13 arel: 3.0.2 MySQL: 5.1.65 検索条件をORで繋げたい 基的な構文ですがSQLを直接記述する場合が多いのではないでしょうか? User.where("name = ? OR name = ?", "太郎", "花子").to_sql #=> "SELECT `users`.* FROM `users` WHERE (name = '太郎' OR name = '花子')" なるべくRubyで書こうとするとこうな

    Rails 3&4: Arel::Tableを使ってなるべく生のSQLを書かずに済ます方法|TechRacho by BPS株式会社
    snomof
    snomof 2013/05/28
  • 1