背景
データベースを利用しないアプリケーションをわざわざRailsで実装したくなる時もあると思います。
僕の場合は、バックエンドにはAPI用の別アプリケーションを使用して、react-railsを用いたフロントエンドのみのRailsアプリケーションをデプロイする必要が出たので、そのときの作業を記録します。
環境
- Rails = 4.2.5
- capistrano ~> 3.1
手順
- GemfileからDBアダプタgemの削除
- config/application.rbのrequire設定の変更
- config以下のactive_recordを使用している設定の削除
- test_helperのactive_recordに依存している処理の削除
- capistranoタスクからmigration処理の削除
1. GemfileからDBアダプタgemの削除
Gemfile
gem 'mysql2' # Remove this line
gem 'sqlite3' # Remove this line
gem 'pg' # Remove this line
2. config/application.rbのrequire設定の変更
rails/all
をrequireする行があるのでこれを削除して、代わりに以下の行を足す。
config/application.rb
# require 'rails/all' # Remove this line
# Add below
%w(
action_controller
action_view
action_mailer
active_job
rails/test_unit
sprockets
).each do |framework|
begin
require "#{framework}/railtie"
rescue LoadError
end
end
補足
require 'rails/all'
では railties/lib/rails/all.rbの以下の行が実行される
rails/all.rb
require "rails"
%w(
active_record
action_controller
action_view
action_mailer
active_job
rails/test_unit
sprockets
).each do |framework|
begin
require "#{framework}/railtie"
rescue LoadError
end
end
このactive_recordをrequireする処理を除いたのが上で行ったこと。
3. config以下のactive_recordを使用している設定の解除
config/application.rb
config/application.rb
module YourApp
class Application < Rails::Application
config.active_record.raise_in_transactional_callbacks = true # <= Remove this line
end
end
config/environments/{environment}.rb
config/environments/{environment}.rb
Rails.application.configure do
config.active_record.dump_schema_after_migration = false # <= Remove this line
end
4. test_helperのactive_recordに依存している処理の削除
test/test_helper.rb
class ActiveSupport::TestCase
fixtures :all # <= Remove this line
end
5. capistranoタスクからmigration処理の削除
config/deploy.rb
Rake::Task['deploy:migrate'].clear # Add this line
以上でデータベースに接続しないRailsアプリケーションをデプロイできるようになりました。