unicornとunicorn_railsのオプションの違い

unicornunicorn_railsはほとんど同じ挙動をして、 application serverを立ち上げてくれますが、一部オプション指定の意味が違います。

ちょっとハマったので書いておくことにします。

結論

  • unicornのオプション-ERACK_ENVを設定
  • unicorn_railsのオプション-ERAILS_ENVを設定

参考: http://unicorn.bogomips.org/

経緯1

Capistrano 3を導入しまして、unicornを使っていたので無邪気に

を使っていました。(僕の環境では0.3.2) 普通に動かしていたんですが、muninがunicornのmemory statusをうまく取得できていないようでした。

該当のmuninのplugin

pluginに目をちゃんと通すとわかるんですが、

   def memory_usage
      result = { :master => {master_pid => nil}, :worker => {} }
      ps_output = `ps auxw | grep unicorn_rails`
      ps_output.split("\n").each do |line|

なるほど。unicorn_railsgrepしてます。

ということで、よく調べてみると、sepastian-capistrano3-unicornのデフォルトでは unicornを使ってunicornプロセスを起動していて、このままではこのunicorn_memory_status に引っかからないわけです。

ということで、unicorn立ち上げをunicorn_railsを通して実行する必要があるわけですがこれはわけなく行えます。 sepastian-capistrano3-unicorn は、unicorn_binというパラメータを用意してまして、これのデフォルトがunicornになっているわけなので、ここを変更する。

RAILS_ROOT/config/deploy.rbに下記記述を追記します。

set :unicorn_bin, ->{"unicorn_rails"}

(ラムダで囲んでんのは特に深い意味は無いんですが、評価時にいろいろ変更するようなモノが多いので念のため標準的にこうするようにしています。)

とここで世界は平和に終ると思っていました。

経緯2

unicornの時の-EパラメータがRACK_ENVであるということは理解していたので、RAILS_ENVunicorn実行前に設定するようにしてたわけです。 こんな感じで

RAILS_ENV=hogehoge; unicorn -E development .....

僕はVM上でrailsを動かすコトが多くて、vmというRAILS_ENVをつくっていました。 しかしunicorn_railsに変更してみたら、僕のVMで急にunicornが立ち上がらなくなりました。

RAILS_ENV=vm; unicorn_rails -E development .....

どうも、dababase.ymlにadapterの指定がない的なエラーがはかれていて、おかしーなーと思ったんです。 と、ここで気付きました。

-Eオプションが、RAILS_ENVを上書いていることを。

んで、下記をみた

なるほどね。

以上!

rubyをsublimetext2でcode整形

perl tidyみたいな感じでフォーマットしたい。

https://github.com/CraigWilliams/BeautifyRuby つかってみた。

cmd + shift + p
Package Control: Install Packageと打つ
BeautifyRuby

デフォルトで下記のようにしてフォーマット

ctrl + cmd + k

なんかセーブのタイミングでフォーマットしてくれるモードがあるっぽいので、 あとでつかってみようかな。

Sublime Text 2 を設定してみた1

会社の同僚やら、上司やらが使い始めたsublime textを僕も使ってみたいと思い、もろもろ設定してみた記録です。 いまのところemacsをつかっているのですが、乗り換えてもいいかもと、思い始めました。。

ターミナルから立ち上げる設定

下記URLよりダウンロード

そしてインストールする

ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /usr/local/bin/sblm

Package Controll

いろんなパッケージを簡単にインストールするための設定

Ctrl + `

もしくは、

メニュー「view」 -> Show Console

からの下記打ち込み

import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')

emacsキーバインド

個人的にはかなりemacsな感じでつかえてつかいやすい

⌘ + shift + p
Package Control: Add Repository

下記リポジトリを追加 * https://github.com/grundprinzip/sublemacspro

⌘ + shift + p
Package Control: Install Package
sublemacspro

Markdownを書く時の設定

もろもろ

強調とかが便利に保管されます。

⌘ + shift + p
Package Control: Install Package
MarkdownEditing

シンタックスハイライト

下記ブログより

cd ~/Library/Application Support/Sublime\ Text\ 2/Packages/Color\ Scheme\ -\ Default
vim Monokai.tmTheme 

上記で開いたファイルの<\array>より前に 下記を貼付けるよ。

<dict>
    <key>name</key>
    <string>Markdown: Linebreak</string>
    <key>scope</key>
    <string>text.html.markdown meta.dummy.line-break</string>
    <key>settings</key>
    <dict>
        <key>background</key>
        <string>#A57706</string>
        <key>foreground</key>
        <string>#E0EDDD</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>Markdown: Raw</string>
    <key>scope</key>
    <string>text.html.markdown markup.raw.inline</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#269186</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>Markdown: Punctuation for Inline Block</string>
    <key>scope</key>
    <string>punctuation.definition.raw.markdown</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#269186</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>Markup: Heading</string>
    <key>scope</key>
    <string>markup.heading</string>
    <key>settings</key>
    <dict>
        <key>fontStyle</key>
        <string>bold</string>
        <key>foreground</key>
        <string>#cb4b16</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>Markup: Italic</string>
    <key>scope</key>
    <string>markup.italic</string>
    <key>settings</key>
    <dict>
        <key>fontStyle</key>
        <string>italic</string>
        <key>foreground</key>
        <string>#839496</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>Markup: Bold</string>
    <key>scope</key>
    <string>markup.bold</string>
    <key>settings</key>
    <dict>
        <key>fontStyle</key>
        <string>bold</string>
        <key>foreground</key>
        <string>#586e75</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>Markdown: Punctuation for Bold, Italic</string>
    <key>scope</key>
    <string>punctuation.definition.bold.markdown, punctuation.definition.italic.markdown</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#586e75</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>Markup: Underline</string>
    <key>scope</key>
    <string>markup.underline</string>
    <key>settings</key>
    <dict>
        <key>fontStyle</key>
        <string>underline</string>
        <key>foreground</key>
        <string>#839496</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>Markup: Quote</string>
    <key>scope</key>
    <string>markup.quote</string>
    <key>settings</key>
    <dict>
        <key>fontStyle</key>
        <string>italic</string>
        <key>foreground</key>
        <string>#268bd2</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>Markup: Separator</string>
    <key>scope</key>
    <string>meta.separator</string>
    <key>settings</key>
    <dict>
        <key>background</key>
        <string>#eee8d5</string>
        <key>fontStyle</key>
        <string>bold</string>
        <key>foreground</key>
        <string>#268bd2</string>
    </dict>
</dict>

Markdownのプレビュー

Markdownをプレビューできるようにする いちいちMarkdownのプレビューサービスとか、つかわなくてすむというのはらくちんでいい。

⌘ + shift + p
Package Control: Install Package
Markdown Preview

自動ブラウザリロード

Markdown編集保存時などに、自動的にブラウザをリロードしてくれる設定

⌘ + shift + p
Package Control: Install Package
Live Reload

次にchromeにextensionをインストールする