Ruby(+ on Rails)を触ってみる

環境構築

rbenvのインストール
node.jsでいうnvmとかvoltaと同じ

rbenv install --list
rbenv install 3.2.2
rbenv global 3.2.2
バージョン指定をする
Node.jsと違ってLTSという概念はない?普通に最新の安定版を入れた

puts "hello ruby!"
puts 1 + 2 * 3
output
user@Users-MacBook-Pro ruby % ruby hello_world.rb
hello ruby!
7

命名規則は結構メジャーなruby-style-guide(https://github.com/rubocop/ruby-style-guide)というものがあるらしい。
日本語にしてくれてるサイト

ここからはRailsの環境構築

railsを入れる
gem install rails -v 7.1.1
インストールしたらTerminal再起動
最新版はここで確認できる

試しに足し算ができるAPIを作ってみる
rails new calculator_api --api
railsでAPIを作りたいときは、--api
optionを指定してAPIモードという挙動にするらしい(?)

add_calcuratorのディレクトリに移動して、rails s
するとサーバーが起動する
なんかかっこいい

appの中がメインのコードたち?
最初からMVCに沿ってコードが分離してる

初めてJSXを見た時と同じ拒絶反応が・・・慣れか

rubocopというlinter & formatterを兼ねたもの?を入れた。
VSCodeの拡張機能にはruby-rubocopというものを入れた

早速開発を始める
新しく計算をするためのCalculator
コントローラを作る。
rails generate controller Calculator
calculator_api/app/controllers/calculator_controller.rb
に新しいControllerが作られる

ルーティングの設定。
Rails.application.routes.draw do
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
# Can be used by load balancers and uptime monitors to verify that the app is live.
get "up" => "rails/health#show", as: :rails_health_check
# 計算API - 足し算
post 'calculate/add', to: 'calculator#add'
end

# frozen_string_literal: true
# 電卓機能
class CalculatorController < ApplicationController
def add
num1 = params[:num1].to_f
num2 = params[:num2].to_f
result = num1 + num2
render json: { result: result }
end
end

おー
user@Users-MacBook-Pro % curl -X POST -d "num1=5&num2=7" http://localhost:3000/calculate/add
{"result":12.0}%
小数点計算もできる◎
user@Users-MacBook-Pro % curl -X POST -d "num1=5.5&num2=7.4" http://localhost:3000/calculate/add
{"result":12.9}%

コミット量がえげつないけどこれ全部コミットして大丈夫なのか?
.keep
とか要らなそうな雰囲気出てるけどこれ何
→空っぽのフォルダをgit管理に加えるために作ってるらしい(https://blog.yuhiisk.com/archive/2017/04/26/whats-rails-keep-file.html)

今回の作業で作成したリポジトリ:
Ruby: https://github.com/avaice/learn-ruby
Rails: https://github.com/avaice/calculator_api

オツカレサマデシタ