生产中具有相同名称的两条路线。 (Heroku的)

时间:2017-09-14 19:42:55

标签: ruby-on-rails heroku routes ruby-on-rails-5 spree

我有一个红宝石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 theoption, 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

1 个答案:

答案 0 :(得分:1)

最新版本的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