Ruby事始め

経緯

業務でRubyを使う案件があり、アサインするか…?しないか…?
するかしないかは、あなた次第です。
のような感じだったので触ってみることにした。

やったこと

最初はRailsチュートリアルでもやろうかと思っていたけれども、
弊社に居るRubyエンジニアの方曰く
「とりあえずは生のRubyに触る方が良いと思う」
との事だったので素直にRubyを触ることにした。
Rubyを触るだと変な感じがするけどそんな感じ)

とりあえず目指すところとして、
PHPでいえばPHPUnitだけcomposer installされていてテストができる
状態を目指すことにした。

src/
  Hoge.php
tests/
  HogeTest.php
vendor/
   // 割愛
composer.json
phpunit.xml

環境

OS : macOS Catalina
Ruby : 2.7.0 (anyenvが便利だった)

参考資料

qiita.com qiita.com

構築

ほぼほぼQiitaの丸写しをしていく。
作業ディレクトリで以下コマンドを叩く。

> bundle init

bundle initをするとGemfileが作成される。
bundleがcompsoerみたいなもん?
Gemfileがcomposer.json的な?

rspecをインストールするためGemfileに以下を記述。
gem "rspec", ">= 3.0.0"
何故rspecなのかと言うとTDD本で見たことがあったし有名っぽいから。

> bundle install

すかさずinstallする。ますますcomposerっぽい。
ディレクトリができるのか?と思ったけどできなかった。
もう一声必要らしい。

> bundle exec rspec --init

rspecディレクトリが生成された。

rspec/
  examples.txt
  spec_helper.rb
Gemfile
Gemfile.lock

spec_helper.rbのコメントアウトされている部分(- =begin,- =end)を外し、準備完了である。
よーし!

正直に言ってここまでのことはほぼほぼ理解していない。
……とにかくテストを書きたかった。

class Hello
    def message
        "Hello!"
    end    
end

defがなんか…function的な…?
messageがfunction名で…?

まいったな…
いったいどこに迷い込んでしまったんだ…

焦るんじゃない
俺はテストが書きたいだけなんだ

require_relative '../src/Hello'

RSpec.describe Hello do
    it "message return Hello!" do
        expect(Hello.new.message).to eq "Hello!"
    end
end

…?

あ…しまった
テストはここでおわりか…

ということでテストを起動してみる。

> bundle exec rspec

f:id:matsup8:20200206005322p:plain
テスト結果

ようやくテストが出来た。
正直に言ってほぼほぼ理解できていないが、気が向いたらまたやろう。
向かなければ、PHPに詰まって憤死しそうな時にでもやればいい。

そう思った。

俺は得体の知れない奇妙な満足感を味わっていた。