Отключить активное хранилище в Rails 5.2

Обновление Rails до 5.2, и я узнал, что должен зафиксировать файл storage.yml в управлении версиями. Я не планирую использовать ActiveStorage. Есть ли способ отключить его?

Ответы

Ответ 1

Удалить следующую строку из config/application.rb

require "active_storage/engine"

Удалить следующую строку из окружения config/environments/*.rb

config.active_storage.service = :local

Удалить следующую строку из app/assets/javascripts/application.js

//= require activestorage

Маршруты рельсов ActiveStorage исчезнут

Если в application.rb есть оператор require 'rails/all' тогда вы можете использовать решение, представленное ниже, где вам нужно требовать зависимости по зависимости и опускать active_storage.

Ответ 2

Единственное решение, которое я нашел до сих пор, находится в config/application.rb, заменив:

require 'rails/all'

С:

require "rails"

# Include each railties manually, excluding 'active_storage/engine'
%w(
  active_record/railtie
  action_controller/railtie
  action_view/railtie
  action_mailer/railtie
  active_job/railtie
  action_cable/engine
  rails/test_unit/railtie
  sprockets/railtie
).each do |railtie|
  begin
    require railtie
  rescue LoadError
  end
end

который взят из источника Rails.

Ответ 3

Удалите строки из следующего config/environments/*.rb из config/environments/*.rb

config.active_storage.service = :local

Rails не загрузит файл yaml.

Ответ 4

Если ваша проблема связана с развертыванием в Heroku, я обнаружил, что решение проблемы с адаптером базы данных postgres может решить эту проблему. Измените производственный раздел config/database.yml на:

production:
  adapter: postgresql
  encoding: unicodeubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>