LoginSignup
1
1

More than 3 years have passed since last update.

Ruby on Rails初心者の学習記録

Last updated at Posted at 2019-09-05

本記事の趣旨

本記事は、普段メインでJavaを使っているwebエンジニアの、
Ruby(Ruby on Rails)お勉強記録です。
高度な内容ではない点やお作法的にもよろしくない部分がある点につきましては、あらかじめご了承ください🙇

業務のかたわら週1回1時間程度、ゆるりと進めています。

第0回 準備

  • MacにHomebrewをインストール

ターミナルで下記シェルを実行。
https://brew.sh/index_ja

第1回 Hello World

$ sudo gem i rails
$ rails new 【プロジェクト名】

作成したプロジェクト内にcdして下記コマンドでサーバを起動します。

$ rails s

webブラウザで
localhost:3000
を叩いて、下記画面が表示されれば成功。ここまで爆速。
スクリーンショット 2019-07-29 18.24.34.png

$ gem install bundler
でインストール。

  • rbenvとは、Rubyのバージョン管理。

$ brew install rbenv
でインストール(詳細は第6回)。

第2回 ディレクトリ構成

雑にまとめると、

  • app配下にController
  • jobs 非同期処理でレスポンスを返さない、やりっぱなしの処理
  • models modelに紐づくロジックはすべてそのクラス内に書く(※modelの設計は慎重にやる必要があるらしい(MDD、TDD、DDD))
  • db配下のseeds.rbは初期データ
  • config配下は諸々の設定で、設定対象によってファイルが別れている -- cable.yml -- database.yml -- puma.rb → アプリケーションサーバ的な設定?

スキマ時間でドットインストールで学習しても良いかも知れない
https://dotinstall.com/lessons/basic_rails_v3

第3回 Controllerを作成してみよう

コマンドラインからクラスの作成を行う。
この辺はあまりJavaではなかったやり方。

$ rails generate controller 【コントローラ名】 【アクション名】

今回は

$ rails generate controller users index

アクション名をつけてコマンドを叩くと、対応するviewが作られます。viewsディレクトリ配下にいるはず。

Contoller→Javaでも同義
アクション名→Javaでいうメソッド

サーバを起動して、

localhost:3000/users/index

を叩くと、先程作成したアクションが実行され、viewが表示されます。
返却するview名を明示しない場合、自動的にアクション名と同じ名称のviewが選ばれるようです。

第4回 ViewからContollerに渡した値を永続化してみよう

第3回で表示してみたviewを編集していきます。
textboxとsubmitボタンを追記します。

views/index.html.erb
<%= form_tag("/users/create", method: "post") do %>
    <input type="text" name="hoge" value="piyo" />
    <%= submit_tag("作成!") %>
<% end %>

エンドポイントのマッピングを書いていきます。

config/routes.rb
Rails.application.routes.draw do
  get 'users/index'
  post 'users/create' #この行を追加
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

  • modelを作成
$ rails g model モデル名 [メンバ名]:String

migrateするとsqliteに自動でtableを作ってくれます。

$ rails db:migrate

ControllerでviewからPOSTされた値を受け取って保存するコードをusers_controllerに記述します。

controllers/users_controller.rb
class UsersController < ApplicationController
  def index
  end
  #下記のdef〜endを追記
  def create
  #hogeはviewに書いたPOSTされてくる要素
  model名】.create(【メンバ名】:params[:hoge])
  p model名】.all
  end
end

index.html.erbのsubmitボタンを押下すると、先程作成したPOSTメソッドが実行されDBに値が保存されます。
sqliteの中身を実際に確認してみましょう。
db配下にdevelopment.sqlite3がいるはずなので、dbまでcdし、

$ sqlite3 development.sqlite3
sqlite3> select * from テーブル名 

POSTした値がDBに登録されているはずです。
スクリーンショット 2019-08-16 10.09.08.png

第5回 scaffoldでCRUDを自動生成

$  rails g scaffold モデル名 カラム名:型

いろいろつくられます。

スクリーンショット 2019-08-22 18.27.19.png

$ rails db:migrate
でマイグレーションし、
$rails s
で起動し、
localhost:3000/doramis
にアクセスし、いろいろいじってみると、

  • 一覧表示
  • 登録
  • 更新
  • 削除

が一通りできる。マスタメンテ画面ならこれで十分。
DBの中身は前回もやったようにsqlite3コマンドで確認可能。

<%= link_to 'New Dorami', new_dorami_path %>

今日の感想

link_to が初見だとカオス。

第6回 Rails6にアップデート

参考

https://qiita.com/rry/items/12d794437cde733f8ece
https://qiita.com/NaokiIshimura/items/8203f74f8dfd5f6b87a0

Rubyのバージョンが古かったので、
rbenvのバージョンを2.6.4をインストール、切り替えして作業しました。

$ rbenv install 2.6.4
$ rbenv local 2.6.4
$ ruby -v
$ sudo gem i rails -v "6.0.0"
$ rails new 【プロジェクト名】
$ rails s

バージョンがうまく切り替わらなかったので、
.bash_profileに
eval "$(rbenv init -)"
を追加。

おまけ rails console

https://qiita.com/you8/items/00d97f871f5fa78905f7
Modelを作成してrails consoleでデータを保存してみる、などをしてみました。

第7回 BootStrapを入れてみる

Gemfileに下記を追加
gem 'bootstrap', '~> 4.2.1'

プロジェクト配下で
$ bundle install

/app/assets/stylesheets/application.css
をapplication.scssにリネームし、
@import "bootstrap";
を追記。

適当なerbファイルに下記を追加。

index.html.erb
<button class="btn btn-info" type="submit">BootStrap読み込めてるかな</button>

反映されてたら成功!
スクリーンショット 2019-09-05 18.42.50.png

感想

プロフダクションコードを書けるようになるにはもう少し時間をとって学習しないとな、と思いました。

今後もゆるりと進めていく予定です・・・

第8回 APIモード

プロジェクト作成時に--apiをつけるとviewに関係する部分の作成がされなくなります。

rails new sample-api --api
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1