blue workbench

Ruby and Rails

【Rails】アプリケーション作成手順

$ mkdir app-name && cd $_
$ rbenv local 2.7.2
$ ls -a
.             ..            .ruby-version
$ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19]
$ gem search ^rails$ -l

*** LOCAL GEMS ***

(※何もなかった)
$ gem i -v 6.0.3.4 rails
$ gem search ^rails$ -l

*** LOCAL GEMS ***

rails (6.0.3.4)
$ rails -v
Rails 6.0.3.4
$ rails _6.0.3.4_ new -d postgresql -T --skip-sprockets .
$ git add .
$ git commit -m 'first commit'
$ git branch -M main
$ git remote add origin https://github.com/USERNAME/app-name.git
$ git push -u origin main

MySQLを使用する場合は以下のように。

$ rails _6.0.3.4_ new -d mysql -T --skip-sprockets .

【Rails】RSpecとfactory_botを導入する

factory_botを用いたモデルスペックが実行できるところまで準備します。

gem

group :development, :test do
  gem 'rspec-rails'
  gem 'factory_bot_rails'
end

group :development do
  gem 'spring-commands-rspec' # RSpecを高速化するための記述
end
$ bundle install

インストールする

$ rails generate rspec:install

.rspec に追記する

--require spec_helper
--format documentation # この行を追記

RSpecを高速化する

$ bundle exec spring binstub rspec

spec/rails_helper.rb を編集する

# コメントアウトを解除して、spec/support/ 以下の全てのファイルが自動的に読み込まれるようにする
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }

RSpec.configure do |config|
  # FactoryBotの名前空間を省略できるようにする
  config.include FactoryBot::Syntax::Methods
end

参考

【Rails】Hamlを導入する

gem

gem 'hamlit-rails'
$ bundle install

既存ファイルをHamlで書き直す

app/views/layouts/application.html.haml

headタグの中身は自分なりにカスタマイズしています。

!!!
%html
  %head
    %title
      = content_for?(:head_title) ? yield(:head_title) : 'AppName'
    = csrf_meta_tags
    = csp_meta_tag
    %meta{charset: 'utf-8'}/
    %meta{'http-equiv': 'X-UA-Compatible', content: 'IE=edge'}/
    %meta{name: 'viewport', content: 'width=device-width, initial-scale=1'}/
    %meta{'http-equiv': 'content-language', content: 'ja'}/
    /[if lt IE 9]
      %script{src: 'https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js'}
      %script{src: 'https://oss.maxcdn.com/respond/1.4.2/respond.min.js'}
    = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
    = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
  %body
    = yield

カスタマイズしてない版

!!!
%html
  %head
    %title AppName
    = csrf_meta_tags
    = csp_meta_tag

    = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
    = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
  %body
    = yield

app/views/layouts/mailer.html.haml

!!!
%html
  %head
    %meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-Type"}/
    :css
    /* Email styles need to be inline */
  %body
    = yield

app/views/layouts/mailer.text.haml

= yield

【Rails】ジェネレータをカスタマイズする

module AppName
  class Application < Rails::Application
  
    ...中略...

    config.generators do |g|
      g.assets false
      g.helper false
      g.jbuilder false
      g.test_framework :rspec,
                       # テストデータベースにレコードを作成するファイルの作成をスキップ
                       fixtures: false,
                       # ビュースペックの作成をスキップ(UIのテストはフィーチャスペックに任せる)
                       view_specs: false,
                       # ヘルパースペックの作成をスキップ
                       helper_specs: false,
                       # ルーティングスペックの作成をスキップ
                       routing_specs: false,
                       # コントローラースペックの作成をスキップ
                       controller_specs: false,
                       # リクエストスペックの作成をスキップ
                       request_specs: false
    end
  end
end

【Rails】最序盤タスクまとめ

前提

以下の記事の通りに、アプリケーション作成 => git pushまで済んでいること。

now-on-air.hatenablog.com

書き出してみる

.gitignoreを書く

※~/.gitconfigと~/.gitignoreの設定を済ませたので、最近はもうやってません。

.idea

DB作成

$ rails db:create

Gemfileのコメントを削除する

コメントアウトされているgemの記述は一応残しています。
可読性が担保されればいいかなということで。

Sassを導入する

application.css => application.scssにリネームするだけです。

※Sassじゃなくてもいいかなと思い、最近はもうやってません。

reset.cssを導入する

以下のreset.cssを使っています。

html5doctor.com

タイムゾーンロケールを設定する 

now-on-air.hatenablog.com

ジェネレータをカスタマイズする

now-on-air.hatenablog.com

Hamlを導入する 

now-on-air.hatenablog.com

RSpecを導入する

一旦はfactory_botを用いたモデルスペックが実行できるところまで

now-on-air.hatenablog.com

Simple Formを導入する

now-on-air.hatenablog.com

.rubocop.ymlを作成する

now-on-air.hatenablog.com

【RubyMine】ショートカットまとめ

随時更新します。

RubyMine ショートカット

 + 9VCSパネルを開く

 + Shift + O : ファイルを検索する

 + K : コミットする

 + F12 : ターミナルを開く