Rails - 使用重复路由部署到Heroku

时间:2016-11-28 22:36:31

标签: ruby-on-rails heroku routes clearance

我正在部署使用清仓宝石到Heroku的Rails应用程序。一切都在开发中工作正常,但我遇到了宝石生成的路线我遇到了麻烦。

尝试部署到Heroku时,我收到错误...

ArgumentError: Invalid route name, already in use: 'sign_in'


You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here:
remote:        http://guides.rubyonrails.org/routing.html#restricting-the-routes-created

我没有看到限制重复的位置或使用我的任何资源生成它们的位置:

请参阅下面的routes.rb文件

的routes.rb

Rails.application.routes.draw do

  resources :passwords, controller: "clearance/passwords", only: [:create, :new]
  resource :session, controller: "clearance/sessions", only: [:create]

  resources :users, controller: "clearance/users", only: [:create] do
    resource :password,
      controller: "clearance/passwords",
      only: [:create, :edit, :update]
  end

  get "/sign_in" => "clearance/sessions#new", as: "sign_in"
  delete "/sign_out" => "clearance/sessions#destroy", as: "sign_out"
  get "/sign_up" => "clearance/users#new", as: "sign_up"

  get 'newSignUp', to: 'signups#new'
  post 'newSignUp', to: 'signups#create'

  get 'newTrip', to: 'trips#new'
  post 'newTrip', to: 'trips#create'

  get 'trips/:id/send_itinerary' => 'trips#send_itinerary', as: :trips_send_itinerary



  root 'static_pages#home'
  get 'static_pages/home'
  get 'static_pages/help'
  get 'static_pages/about'
  get 'static_pages/contact'


  resources :signups
  resources :tripitems
  resources :trips

end

2 个答案:

答案 0 :(得分:1)

此问题与clearance gem。

有关

我对宝石并不完全熟悉,所以按照惯例,我检查了github,发现了以下内容:

# config/routes.rb
if Clearance.configuration.routes_enabled?
  Rails.application.routes.draw do
    resources :passwords,
      controller: 'clearance/passwords',
      only: [:create, :new]

    resource :session,
      controller: 'clearance/sessions',
      only: [:create]

    resources :users,
      controller: 'clearance/users',
      only: Clearance.configuration.user_actions do
        resource :password,
          controller: 'clearance/passwords',
          only: [:create, :edit, :update]
      end

    get '/sign_in' => 'clearance/sessions#new', as: 'sign_in'
    delete '/sign_out' => 'clearance/sessions#destroy', as: 'sign_out'

    if Clearance.configuration.allow_sign_up?
      get '/sign_up' => 'clearance/users#new', as: 'sign_up'
    end
  end
end

这基本上是为您创建相同的路由,仅当config routes_enabled?为真时才会生效。

您需要按照以下方式配置clearance以自行处理路由:

config.routes = false

答案 1 :(得分:0)

在查看了宝石GitHub后,看起来我先前对路线进行了调整,即使初始化程序中的config.routes设置为false,生成的生成资源也会产生冲突。

我结束了删除raked路线并使config.routes = true。