仕事でrailsを使ったプロジェクトの本番環境を構築したり改修に携わっているのにrubyの開発がわからないというのはまずいと思い、年末年始の休みで時間もあるので少し勉強しました(^q^
環境構築
rubyinstallerではなくrbenvを使ってrubyをインストールしました。
rbenvはnodejsでいうところのnodist,nvmのような感じで複数のバージョンを簡単に切り替えられる便利なツール。
rbenvはLinux環境用に存在したもの?ですが、探してみたところWindows用のものが見つかりました。
参考:Windowsのコマンドラインからrbenvを使いたい – Qiita
参考リンク先のインストールバッチを実行した後、試しにruby2.5.3とruby2.6.0をインストールしてみました。
> rbenv install 2.6.0 > rbenv install 2.5.3 > rbenv rehash > rbenv global 2.5.3 > rbenv versions * 2.5.3 (set by C:\Users\@@@@@\.rbenv-win\version) 2.6.0 > ruby -v ruby 2.5.3p105 (2018-10-18 revision 65156) [i386-mingw32]
rubyプロジェクト作成
IDEはVSCodeがいいそうですがEclipse4.8にrubyの開発プラグインが入ってたのでとりあえずこちらを利用しました。
rubyプロジェクトに対応するインタプリターの設定を行う必要があったのでrbenvでインストールしたruby2.6.0のruby.exeを設定しました。
プロジェクト名はrubytestとしました。
参考:Eclipse 4.5でRuby開発環境を整える – Qiita
プロジェクト固有のrubyバージョン設定
コマンドプロンプトから以下実施。
グローバルなバージョンは2.5.3ですが、rubytestプロジェクトで使用するrubyは2.6.0としました。
> cd /D C:\workspace4.8\rubytest > rbenv local 2.6.0 > cat .ruby_version 2.6.0
rbenv localコマンドを実行するとカレントに.ruby_versionというファイルが作成されました。中身は指定したrubyのバージョンが記載された単純なテキストの模様。
bundlerのインストール
rubyのライブラリはGemfileにまとめておいてインストールするのが一般的なので、bundleコマンドを使えるようbundlerをグローバルインストールしました。
> gem install bundler
sinatraを導入したサンプルWebアプリ作成
rubyの入門にはsinatraというフレームワークが軽量でよさそうでした。bundle initでGemfileを作成、必要なライブラリをbundle addでGemfileに追加、bundle installでプロジェクト配下にインストールを行いました。
参考:SinatraでとりあえずWebアプリを立ち上げてみる – Qiita
> bundle init > bundle add sinatra --skip-install > bundle add sinatra-contrib --skip-install > bundle install --path vendor/bundle
次にapp.rbを作成
require 'sinatra' require 'sinatra/reloader' get '/' do 'hello' end
sinatraではpublicという名前のディレクトリがドキュメントルートになる?模様。
以下のような感じでpublicディレクトリとtest.html、favicon.icoを設置しました。
動作確認
bundleコマンドでrubyを実行。
デフォルトだと4567番ポートで参照できるようになりますが、80番で動作確認したかったので-pオプションを設定しました。
bundle exec ruby app.rb -p 80
ルート直下へのアクセスで「hello」と表示されること、/test.htmlへのアクセスでpublicディレクトリ以下のhtmlが参照できることが確認できました。
まとめ
Windowsにrubyの開発環境を作れました。
sinatraを使用した簡単なWebアプリを作れました。
部分的にrubyのライブラリを使ったりする必要があるときすごい重宝しそう。
今回作成したrubyのプロジェクトをgithubにもプッシュしました。
GitHub:imo-tikuwa/ruby-sinatra-example
その他
ruby-sinatra-exampleを少しだけ発展させてthinreportsというrubyの帳票出力ライブラリを導入してPDFを生成するサンプルを作成してみました。
GitHub:imo-tikuwa/ruby-thinreports-example
また、別のプロジェクトでHTML上でCanvasを使用するなどしてthinreports上で使用するtlfファイルを作成し、PDFダウンロードするというプログラムも作成中なので完成したら追記しようと思います。