おつかれさまです!のぶじゃすです。
今回はRuby on Railsの新規バージョン7.0.0が2021/12/15にリリースされたので、キャッチアップもかねて学習していこうと思います。
私は Ruby on Rails (以下Rails)を使っている会社に勤めているのですが、普段はSalesforce開発が主なので普段は全くと言っていいほどRailsに触れていません。先日偶然バージョン7が出たというツイートを見たのでスキマタイムで何かしらWebサービスを作る所までキャッチアップしていこうかなと思います。
対象読者
今回はそもそもの基本をやっていきます。
- Ruby on Railsはほとんど触ったことない
- プログラミングはざっくり分かる
- なにか作ってみたい
という人むけに書いていきます。分かりづらい事などありましたらコメント頂けたら嬉しいです。
「読者」とか書きましたが今回は動画です
Ruby on Rails キャッチアップ動画を作成してみました。この動画を見ていただければ全部わかります。是非ご覧ください!
細かい説明や補足などを以下にテキストとして記載しています。
今後キャッチアップしていきたいこと
- 体重削除機能を作る
- 誕生日から年齢を計算して表示する
- heroku に deploy して世界中からアクセス可能に
- フォントを綺麗にする
- firebase でログイン機能を作る
- localeを設定してみる
撮影中にググったサイト紹介
action_text のミスで調べたサイト
dependent オプション
本番で見ていた台本はこちら
本番はこんな台本を見ながら撮影していました。よく左側をみているのはこれですw
$ rails new demo $ cd demo $ rails g scaffold rabbit name:string birthday:date description:text $ code . # migration # model # controller # view/index $ rails db:migrate $ rails s # /rabbits @application.html.erb <link rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css"> # /rabbits.json # controller @models/rabbits.rb validates_presence_of :name, :birthday $ rails c >> Rabbit.first >> Rabbit.create! name: 'aaaa' $ rails action_text:install $ bundle $ rails db:migrate @ models/rabbits.rb has_rich_text :description # create rabbit demo $ ./bin/importmap pin local-time @ application.js import LocalTime from "local-time" LocalTime.start() @ _rabbit.html.erb <p>Weights <%= time_tag rabbit.created_at, "data": {"local": "time-ago"} %></p> $ ./bin/importmap pin local-time --download $ rails g resource weight rabbit:references gram:integer note:string $ rails db:migrate >> Rabbit.first.weights @ models/rabbit.rb has_may :weights >> reload! >> Rabbit.first.weights >> Rabbit.first.weights.create! gram:1000 @ rabbits/show.html.erb <%= render "rabbits /weights", rabbit: @rabbit %> @ rabbits/_weights.html.erb <h2>Weights<h2> <div id="weights"> <%= render rabbit.weights %> </div> <%= render "weights/new", rabbit: rabbit %> @ weights/_weight.html.erb <div id="<%= dom_id(weight) %>"> <%= l(weight.create_at %>: <%= weight.gram.to_formatted_s(:delimited) %> g </div> @weights/_new.html.erb <%= form_with model: [ rabbit, Weight.new ] do |form| %> <div> <%= form.number_field :gram %>g<br> <%= form.submit %> </div> <% end %> @rabbits/_rabbit.html.erb <p>体重を記録した回数: <strong><%= rabbit.weights.count %>回</strong> @weights_controller.rb before_action :set_rabbit def create @rabbit.weights.create! params.required(:weight).permit(:gram) redirect_to @rabbit end private def set_rabbit @rabbit = Rabbit.find(params[:rabbit_id]) end @routes.rb resources :rabbits do resources :weights end # create weight demo # turbo stream demo @rabbit/show.html.erb <%= turbo_stream_from @rabbit %> @models/weights.rb broadcasts_to :post # live refresh demo $ rails c >> Rabbit.find(1).weights.last.destroy >> Rabbit.find(1).weights.last.update! weight: 2000 $ rails test dependent: :destroy
Raills7いいぞ。JavaScriptの事考える時間がめっちゃ減る
いくつか動画外でもさわっていて、Rails7めっちゃ楽しいです。フロントエンドの事を考えなくていいのでかなり快適。 機能の開発に時間を注げる感じです。
今後もキャッチアップしつつBLOG, 動画出していきたいと思っています。
よいRails7ライフを!