新規サービス用のRailsの雛形を作って見た

# はじめに

毎回 rails new して初期設定するのが面倒なので、すぐ開発始められるようにプリセットを作ってみます。

## 採用技術

- Rails
- Ruby
- Yarn
- PostgreSQL

# いざ実践

## ruby最新バージョンを設定する

安定版の最新が`2.5.3`なのでそれをインストールしていきます。

#### Homebrewをアップデート

```
$ brew update
Updated 1 tap (homebrew/core).
==> Updated Formulae
```

#### ruby-buildをアップデート

```
$ brew upgrade ruby-build
Updating Homebrew...
==> Upgrading 1 outdated package:
ruby-build 20180224 -> 20181019
==> Upgrading ruby-build 
==> Downloading https://github.com/rbenv/ruby-build/archive/v20181019.tar.gz
==> Downloading from https://codeload.github.com/rbenv/ruby-build/tar.gz/v20181019
######################################################################## 100.0%
==> ./install.sh
🍺  /usr/local/Cellar/ruby-build/20181019: 417 files, 210.8KB, built in 13 seconds
```

#### 2.5.3をインストール

```
$ rbenv install 2.5.3
ruby-build: use openssl from homebrew
Downloading ruby-2.5.3.tar.bz2...
```

#### 使用するバージョンを2.5.3に指定

```
$ rbenv global 2.5.3
$ ruby -v
ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin17]
```

## 最新のrailsをインストール

最新が`5.2.1`なのでそれをインストールしていきます。

#### rails をインストール

```
$ gem install rails
$ rails -v
Rails 5.2.1
```

#### bundler をインストール

```
$ gem install bundler
Successfully installed bundler-1.17.1
Parsing documentation for bundler-1.17.1
Done installing documentation for bundler after 2 seconds
1 gem installed
```

## rails の雛形を作る

#### rails new

DBは`postgresql`、テストユニットはスキップします。

```
$ rails new rails_preset -d postgresql -T
```

#### 日本語化

`config/application.rb`

```ruby
config.i18n.default_locale = :ja
```

日本語の言語ファイルを作成します

```
$ curl -s https://raw.githubusercontent.com/svenfuchs/rails-i18n/master/rails/locale/ja.yml -o config/locales/ja.yml
```

#### タイムゾーンの設定

`config/application.rb`

```ruby
config.time_zone = 'Tokyo'
```

#### rails generate時の生成ファイルの設定

`css` `js` `helper` ファイルを生成しないようにします。

```ruby
config.generators do |g|
  g.assets false
  g.javascripts false
  g.helper false
  g.test_framework false
end
```

#### Rspecインストール

関連gemを追加

```ruby
group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'rspec-rails', '~> 3.8'
  gem 'factory_bot_rails'
end

group :test do
  gem 'capybara'
  gem 'database_cleaner'
end
```

rspecの設定コマンド

```
$ rails generate rspec:install
```

#### database_cleanerの設定

以下の行のコメントアウトを外す

```ruby
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
```

`spec/support/database_cleaner.rb`

```ruby
RSpec.configure do |config|
  config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do
    DatabaseCleaner.strategy = :transaction
  end

  config.before(:each, js: true) do
    DatabaseCleaner.strategy = :truncation
  end

  config.before(:each) do
    DatabaseCleaner.start
  end

  config.append_after(:each) do
    DatabaseCleaner.clean
  end
end
```

#### factory botの設定

`spec/support/factory_bot.rb`

```ruby
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end
```

#### slimをインストール

`Gemfile`

```ruby
gem 'slim-rails'
```

`config/application.rb`

```ruby
config.generators.template_engine = :slim
```

既存のerbファイルをslimに変換

```
$ gem install html2slim
$ erb2slim app/views/ app/views/ -d
```

#### 開発ツールをインストール

```
gem 'annotate'
gem 'better_errors'
gem 'binding_of_caller'
gem 'bullet'
gem 'hirb'
gem 'hirb-unicode'
gem 'letter_opener_web'
gem 'pry-rails'
gem 'pry-byebug'
```

## ソースコード

ソースはこちらにあげてます

https://github.com/stivan622/rails_preset