最初に

  • 自分用のメモとして随時更新していく
  • アプリ名は sample にしているつもり

rails new

実行コード

rails new sample --webpack -d postgresql -B -T

ポイント

  • webpack を導入
  • postgresql を使う
  • bundle install と unittest ファイルの生成はしない

haml 導入

  • Gemfile に haml-rails 追加
  • bin/rake haml:erb2haml 実行
  • Gemfile から haml-rails 削除
  • Gemfile に hamlit-rails 追加

sass 変更

  • 全て読み込むファイルは定義するので一度 application.css ファイルは消してしまう rm app/assets/stylesheets/application.css
  • touch app/assets/stylesheets/application.sass でファイルだけ作っておく
  • Gemfile に sassc-rails 追加、sass-rails は削除

font-awesome-rails 追加

  • Gemfile に font-awesome-rails 追加
  • app/assets/stylesheets/applicaiton.sass に @import font-awesome 追加

rspec 導入

Bugsnag を入れる

config/initializers/bugsnag.rb

Bugsnag.configure do |config|
  config.api_key = '発行されたapi-key'
  config.notify_release_stages = %w(production staging)
  config.ignore_classes.merge([
    ActiveRecord::RecordNotFound,
    SignalException,
  ])

  ActiveSupport.on_load(:action_controller) do
    config.ignore_classes.merge([
      AbstractController::ActionNotFound,
      ActionController::InvalidAuthenticityToken,
      ActionController::ParameterMissing,
      ActionController::RoutingError,
      ActionController::UnknownFormat,
      ActionController::UnknownHttpMethod,
    ])
  end
end

dotenv を入れる

  • Gemfile に dotenv 追加
    • gem 'dotenv-rails', require: 'dotenv/rails-now'
  • .gitignore ファイルに .env 追加
  • .env.sample.env 作成後、必要な環境変数を記入
  • 上の場合の sample はアプリ名ではない
Bundler.require(*Rails.groups)

Dotenv::Railtie.load

enumerize

config gem

  • Gemfile config 追加
  • rails g config:install 実行

CarrierWave

aws:
  s3:
    bucket: <%= ENV['AWS_S3_BUCKET'] %>
    key_id: <%= ENV['AWS_S3_KEY_ID'] %>
    secret_key: <%= ENV['AWS_S3_SECRET_KEY'] %>
    region: <%= ENV['AWS_S3_REGION'] %>
CarrierWave.configure do |config|
  if %w(production staging).include?(Rails.env)
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: Settings.aws.s3.key_id,
      aws_secret_access_key: Settings.aws.s3.secret_key,
      region: Settings.aws.s3.region
    }
    config.fog_directory = Settings.aws.s3.bucket

    config.storage = :fog
    config.fog_public = false
    config.fog_authenticated_url_expiration = 60 * 60 * 24 # second
  else
    config.storage = :file
  end
end

CarrierWave::SanitizedFile.sanitize_regexp = /[^[:print:]]/

CircleCI

  • v2 対応
  • selenium + chrome headless 想定

.circleci/config.yml

config/database.yml.circleci

test:
  adapter: postgresql
  encoding: unicode
  database: sample_test
  pool: 20
  username: postgres
  host: localhost