スポンサーリンク

Windowsでrubyの環境構築とかsinatraを使ったWebアプリの作成とか

仕事で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ダウンロードするというプログラムも作成中なので完成したら追記しようと思います。

タイトルとURLをコピーしました