VS Code Remote Containers でRuby 2.7の実行環境作り

VSCode Remote Containers が便利と聞いたので試してみました。

www.keisuke69.net

今回はRubyの実行環境を作ります。 RubyのDockerイメージが公式にリリースされているのでそれを使う。

hub.docker.com

作業ディレクトリを作ってDockerfileをtouch。

mkdir ruby27
cd ruby27
touch Dockerfile

Dockerfile

FROM ruby:2.7.1
WORKDIR /usr/src/app

f:id:jacoyutorius:20200611060610p:plain
左下の緑色になっている箇所をクリックするとRemote Containersのメニューが開く

あとは、Remote Containers のメニューから Reopen in Container を開いて From 'Dockerfile を選択。 Terminal => New Terminal でターミナルを開くとDockerコンテナ上のターミナルが開く。

f:id:jacoyutorius:20200611061045p:plain
ターミナルを開いた状態


バージョンを表示しただけでは味気ないので Sinatra を入れてみる。

Remote Containers を起動すると作業ディレクトリ内に.devcontainer というディレクトリができます。 その中のdevcontainer.json にポートフォワーディングするポートNoを追記。Sinatraのデフォルトポートの4567 を指定しています。

f:id:jacoyutorius:20200611061452p:plain
forwardPorts を指定

Remote Containersのメニューを開いて Rebuild Container を選択。 あとはRemote Containersのターミナルから作業してきます。

bundle init
# => Gemfile に `gem 'sinatra'` を追記
bundle install

app.rb

require 'sinatra'

get '/' do
  RUBY_VERSION
end

で、sinatraを起動。

ruby app.rb
root@2c10165ba652:/workspaces/ruby27# ruby app.rb 
/usr/local/bundle/gems/sinatra-2.0.8.1/lib/sinatra/base.rb:1526: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/usr/local/bundle/gems/rack-2.2.2/lib/rack/handler/webrick.rb:26: warning: The called method `run' is defined here
[2020-06-10 21:19:28] INFO  WEBrick 1.6.0
[2020-06-10 21:19:28] INFO  ruby 2.7.1 (2020-03-31) [x86_64-linux]
== Sinatra (v2.0.8.1) has taken the stage on 4567 for development with backup from WEBrick
[2020-06-10 21:19:28] INFO  WEBrick::HTTPServer#start: pid=591 port=4567
127.0.0.1 - - [10/Jun/2020:21:19:31 +0000] "GET / HTTP/1.1" 200 5 0.0080
127.0.0.1 - - [10/Jun/2020:21:19:31 UTC] "GET / HTTP/1.1" 200 5
- -> /

ブラウザから http://localhost:4567/ にアクセスするとこのように表示されているはず。

f:id:jacoyutorius:20200611062059p:plain

以上。

rbenvがあるとはいえ、参照ライブラリによってはビルドがコケたりして新バージョン試すのが億劫だったので、こういうs閉じた環境をかんたんに作れるのは嬉しいですねー。