VS Code Remote Containers でRuby 2.7の実行環境作り
VSCode Remote Containers が便利と聞いたので試してみました。
今回はRubyの実行環境を作ります。 RubyのDockerイメージが公式にリリースされているのでそれを使う。
作業ディレクトリを作ってDockerfileをtouch。
mkdir ruby27 cd ruby27 touch Dockerfile
Dockerfile
FROM ruby:2.7.1 WORKDIR /usr/src/app
あとは、Remote Containers のメニューから Reopen in Container を開いて From 'Dockerfile を選択。
Terminal => New Terminal
でターミナルを開くとDockerコンテナ上のターミナルが開く。
バージョンを表示しただけでは味気ないので Sinatra を入れてみる。
Remote Containers を起動すると作業ディレクトリ内に.devcontainer
というディレクトリができます。
その中のdevcontainer.json
にポートフォワーディングするポートNoを追記。Sinatraのデフォルトポートの4567
を指定しています。
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/ にアクセスするとこのように表示されているはず。
以上。
rbenvがあるとはいえ、参照ライブラリによってはビルドがコケたりして新バージョン試すのが億劫だったので、こういうs閉じた環境をかんたんに作れるのは嬉しいですねー。