HerokuのSlugとその動き
by Mitsuhiro Okamoto on 11月 29, 2011 at 03:21 午後

みなさんHerokuはどの言語でお使いですか?個人的にはNode.jsが一番好きですが、古くからサポートされているRubyが一番多いでしょうか。
Herokuでは現在、Cedarスタック(Beta)上では公式に6つのプラログラム言語をサポートしています。
各言語は、RubyGem(Ruby)やnpm(Node.js)、pip(Python)といったパッケージマネージャーと合わせて利用するようにデザインされています。そしてPlay!の様にフレームワークをプラットフォームレベルでサポートしている点も大きな特徴です。
これらの言語やフレームワークで作られたアプリケーションをGit pushで受け取ると(正確にはpre-receive hook)、Dynos間に素早く展開出来るようにプログラムをSlugと呼ぶ塊にします。いわゆるHerokuの世界でのアプリケーションのパッケージです。
このSlugを作る際に、あらかじめアプリケーションがどの言語を使って作成されたの判断することでマルチ言語を実現しています。各言語の判断には、その言語固有のファイルがあるかどうかと優先順位で判断します。
各言語の判断基準と優先順位は以下の通りです。(こちらBlog記載時の実動作をベースとしており、今後変更される可能性があります)
例えばGemfileとpackage.jsonが両方あった場合には、Gemfileが優先されてRubyアプリケーションだと認識されます。
| 優先度 | 言語 / FW | 判断ファイル |
|---|---|---|
| 1 | Ruby | /Gemfile |
| 2 | Node.js | /package.json |
| 3 | Clojure | /project.clj |
| 4 | Python | /requirements.txt |
| 5 | Java | /pom.xml |
| 6 | Scala | /Bulit.sbt |
| 7 | Play! | /conf/application.conf |
| - | PHP | 上記ファイル無し(未アナウンス) |
アプリケーションを構築する際のご参考になれば幸いです。
多言語プラットフォームに関してはAdamのBlog postもご参照下さい。
http://blog.heroku.com/archives/2011/8/3/polyglot_platform/
http://devcenter.heroku.com/articles/slug-compiler
トラックバック
このページのトラックバックURL: http://www.typepad.jp/t/trackback/7240/27307693
このページへのトラックバック一覧 HerokuのSlugとその動き:

