Hello, Crystal
この記事は Crystal Advent Calendar 2015 の 2 日目の記事です
昨日は、pine613 さんの これから Crystal を始める方へ: Crystal 日本語情報まとめ でした。 公式ドキュメントの日本語訳が整っているの素敵ですね!! http://ja.crystal-lang.org/
今日は、crystal の setup から、heroku に deploy するまで、です。
完全、後発です。厳しいです。詳しいことは、↓を見ると良いのではないでしょうか!?
setup
- *env 最高
% anyenv install crenv % crenv install 0.9.1 % crenv rehash % crystal -v Crystal 0.9.1 [b3b1223] (Fri Oct 30 03:26:53 UTC 2015)
initialize app
% crystal init app app # `app` という名前のapplication の雛形用意 % cd app % git commit -m 'initial commit'
create app
- crystal-lang.org の冒頭のHello返すだけのHTTP server に OptionParserでport食わせられるようにしただけ
% cat src/app.cr require "http/server" require "option_parser" port = 8080 OptionParser.parse! do |parser| parser.on("-p PORT", "--port=PORT", "Set server port") { |p| port = p.to_i } end server = HTTP::Server.new("0.0.0.0", port) do |req| HTTP::Response.ok "text/plain", "Hello" end puts "Listening on http://0.0.0.0:#{port}" server.listen
- 試しに実行してみる
# 即時実行 % crystal run src/app.cr Listening on http://0.0.0.0:8080 # ビルドしてあげる % crystal build src/app.cr % ./app -p 5000 Listening on http://0.0.0.0:5000
deploy to heroku
- Procfile とりあえず用意して、手元の環境で、ps 動かしてみる
% cat Procfile web: ./app -p $PORT
% heroku local forego | starting web.1 on port 5000 web.1 | Listening on http://0.0.0.0:5000
% git add . % git commit -m 'update'
heroku create
- ↓のカスタムビルドは、適宜・・好きなのを用意してください
- 今回は手抜きで、crystal version が、手元では、
0.9.1
だけど、0.9.0
でビルドされるカスタムビルドパックを利用しました:p - 今回のカスタムビルドの要件は、
0.9.0
でのビルド。shard.yml
があること。./src/app.cr
がソースファイルで、./app
にリリースビルドされて、Procfile
で./app
を呼び出している感じですね。
- 今回は手抜きで、crystal version が、手元では、
% heroku create --buildpack https://github.com/scaint/heroku-buildpack-crystal.git % git push heroku master Counting objects: 16, done. Delta compression using up to 4 threads. Compressing objects: 100% (10/10), done. Writing objects: 100% (16/16), 306.50 KiB | 0 bytes/s, done. Total 16 (delta 0), reused 0 (delta 0) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Fetching set buildpack https://github.com/scaint/heroku-buildpack-crystal.git... done remote: -----> Crystal app detected remote: -----> Installing Crystal 0.9.0 remote: -----> Installing Shards 0.5.3 remote: -----> Installing Dependencies remote: -----> Compiling src/app.cr remote: remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... done, 409K remote: -----> Launching... done, v3 remote: https://arcane-harbor-8307.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. To https://git.heroku.com/arcane-harbor-8307.git * [new branch] master -> master
% heroku open
反省
アドベントカレンダー事前に準備する
明日は、 5t111111 さんです!