生产中具有相同名称的两条路线。 (英雄)
Two routes with the same name on production. (Heroku)
我有一个 ruby 2.4.0,rails 5.0.2,spree 3.2 应用程序。
我试图创建一个自定义管理报告来查看我所有的库存产品。目前还很丑陋,但在开发中可以完美运行,这与应用程序崩溃的生产环境不同。
当 运行 heroku run rails c
它说 You may have defined two routes with the same name using the
:asoption, or you may be overriding a route already defined by a resource with the same naming.
以下,在上次成功提交后添加的所有内容,按预期相关性:
routes.rb
Rails.application.routes.draw do
mount Spree::Core::Engine, at: '/'
MyApp::Application.routes.draw do
Spree::Core::Engine.routes.append do
get '/admin/reports/stock_per_location' => 'admin/reports#stock_per_location', as: 'stock_per_location_admin_reports'
end
end
end
production.rb
Rails.application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.log_level = :debug
config.log_tags = [ :request_id ]
config.action_mailer.perform_caching = false
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
config.active_record.dump_schema_after_migration = false
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION'),
url: ENV.fetch("BUCKET_URL"),
}
}
end
reports_controller_decorator.rb
require_dependency 'spree/admin/reports_controller'
Spree::Admin::ReportsController.class_eval do
add_available_report! :stock_per_location
def stock_per_location
@stock_locations = Spree::StockLocation.all
end
end
显然,最新版本的 Spree 不支持直接创建路由,更改了我的 routes.rb,它工作正常。
MyApp::Application.routes.draw do
Spree::Core::Engine.routes.append do
#causing troubles on production: get '/admin/reports/stock_per_location' => 'admin/reports#stock_per_location', as: 'stock_per_location_admin_reports', only: [:index]
namespace :admin do
resources :reports, only: [:index] do
collection do
get :stock_per_location
#post :total_sales_of_each_product
end
end
end
end
end
我有一个 ruby 2.4.0,rails 5.0.2,spree 3.2 应用程序。
我试图创建一个自定义管理报告来查看我所有的库存产品。目前还很丑陋,但在开发中可以完美运行,这与应用程序崩溃的生产环境不同。
当 运行 heroku run rails c
它说 You may have defined two routes with the same name using the
:asoption, or you may be overriding a route already defined by a resource with the same naming.
以下,在上次成功提交后添加的所有内容,按预期相关性:
routes.rb
Rails.application.routes.draw do
mount Spree::Core::Engine, at: '/'
MyApp::Application.routes.draw do
Spree::Core::Engine.routes.append do
get '/admin/reports/stock_per_location' => 'admin/reports#stock_per_location', as: 'stock_per_location_admin_reports'
end
end
end
production.rb
Rails.application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.log_level = :debug
config.log_tags = [ :request_id ]
config.action_mailer.perform_caching = false
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
config.active_record.dump_schema_after_migration = false
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION'),
url: ENV.fetch("BUCKET_URL"),
}
}
end
reports_controller_decorator.rb
require_dependency 'spree/admin/reports_controller'
Spree::Admin::ReportsController.class_eval do
add_available_report! :stock_per_location
def stock_per_location
@stock_locations = Spree::StockLocation.all
end
end
显然,最新版本的 Spree 不支持直接创建路由,更改了我的 routes.rb,它工作正常。
MyApp::Application.routes.draw do
Spree::Core::Engine.routes.append do
#causing troubles on production: get '/admin/reports/stock_per_location' => 'admin/reports#stock_per_location', as: 'stock_per_location_admin_reports', only: [:index]
namespace :admin do
resources :reports, only: [:index] do
collection do
get :stock_per_location
#post :total_sales_of_each_product
end
end
end
end
end