Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Vagrant+CoreOS+DockerでCrystalの実行環境をさくさくっと手に入れる

f:id:tbpg:20150910222329p:plain

Vagrant+CoreOS+DockerでCrystalの実行環境を手に入れます


経緯

個人的に1日1Crystalということをやっていて、
Crystalの標準ライブラリのメソッドを一つずつ試しています。
横着して環境構築せずにPlaygroundを利用していたのですが、
今日Playgroundを実行すると500エラーになってしまいました。

仕方ないので環境構築をすることにします。

構成

手順

1. Vagrantfileの初期化

$ vagrant init AntonioMeireles/coreos-stable -m
`vagrantup.com` for more information on using Vagrant.
$ cat Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "AntonioMeireles/coreos-stable"
end

2. Vagfantfileの編集

Vagrant.configure(2) do |config|
  config.vm.provider :virtualbox do |vb|
    vb.name = "crystal"
  end

  config.vm.network :private_network, ip: "172.16.33.123"
  config.vm.box = "AntonioMeireles/coreos-stable"
  config.vm.provision "shell", inline: <<-EOS
docker pull manastech/crystal
  EOS
end

3. VMの起動

$ vagrant up --provider virtualbox
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'AntonioMeireles/coreos-stable'...
# 中略
==> default: Download complete
==> default: Status: Downloaded newer image for manastech/crystal:latest

# ssh 接続の確認
$ vagrant ssh
# 中略
CoreOS stable (766.3.0)
core@localhost ~ $ docker --version
Docker version 1.7.1, build 2c2c52b-dirty

4. Crystalコンテナの実行

$ docker run -it manastech/crystal
root@c383cdca3bec:/opt/crystal# crystal --version
Crystal 0.7.7 [170f859] (Sat Sep  5 03:00:48 UTC 2015)

5. FizzBuzzしてみる

root@c383cdca3bec:/opt/crystal cat << EOS > fizzbuzz.cr
> def fizzbuzz(limit)
>   (1..limit).each do |e|
>     print case
>     when e % 15 == 0 then "FizzBuzz"
>     when e % 5 == 0 then "Buzz"
>     when e % 3 == 0 then "Fizz"
>     else e.to_s
>     end
>   end
> end
>
> fizzbuzz(100)
> EOS
root@c383cdca3bec:/opt/crystal crystal fizzbuzz.cr
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz1617Fizz19BuzzFizz2223FizzBuzz26Fizz2829FizzBuzz3132Fizz34BuzzFizz3738FizzBuzz41Fizz4344FizzBuzz4647Fizz49BuzzFizz5253FizzBuzz56Fizz5859FizzBuzz6162Fizz64BuzzFizz6768FizzBuzz71Fizz7374FizzBuzz7677Fizz79BuzzFizz8283FizzBuzz86Fizz8889FizzBuzz9192Fizz94BuzzFizz9798FizzBuzz

Vagrantfileの公開

GitHubにVagrantfileを公開しておきました

まとめ

便利な世の中になりましたね

外部資料