나는 공을 연주하고 나에게이 오류omniauth 정체성과 Heroku가 작동하지 simple_form_for
ActionController::RoutingError (No route matches [POST] "/auth/identity/register"):
를 던지고하지 Heroku가에 문제가있어 내가 DEV에서 다음 작업을해야합니다.
모델/user.rb
class User < OmniAuth::Identity::Models::ActiveRecord
has_many :services
컨트롤러/users_controller.rb
def new
@user = env['omniauth.identity'] || User.new
end
사용자/new.html.erb
<%= simple_form_for @user, url: "/auth/identity/register" do |f| %><fieldset>
<legend><%= controller.action_name.capitalize %> User</legend>
<%= f.input :name, input_html: { name: "name" } %>
<%= f.input :email, input_html: { name: "email" } %>
<%= f.input :password, input_html: { name: "password" } %>
<%= f.input :password_confirmation, input_html: { name: "password_confirmation" } %>
<div class="form-actions">
<%= f.button :submit %>
<%= link_to 'Cancel', users_path, :class => 'btn' %>
</div></fieldset><% end %>
routes.rb
match "/auth/:service/callback" => 'services#create'
match "/auth/failure" => 'services#failure'
resources :users
이 모든 것이 제 컴퓨터에서 완벽하게 작동하지만 Heroku는 그것을 좋아하지 않습니다. 환경/development.rb 및 production.rb가 함께 만든 기본값입니다 추가 된 다음에 "... 새로운 레일"-
Rails.application.config.middleware.use OmniAuth::Builder do
require 'openid/store/filesystem'
provider :identity, fields: [:name, :email],
model: User,
on_failed_registration: lambda { |env|
UsersController.action(:new).call(env)
}
# generic openid
provider :open_id, :store => OpenID::Store::Filesystem.new('./tmp'), :name => 'openid'end
희망이 모두 의미가 누군가가 답을 가지고있다. 모든 도움이 많이 감사합니다.
감사
흥미롭게도, 나는 Slainer68의 omniauth-identity "here"[https://github.com/slainer68/omniauth-identity/commit/238f38d396e191d85111d9dcd3109314ac4665f6]의 분기 된 버전을 사용합니다. 내가 Heroku "No route [POST]"/ auth/identity/register "와 일치하는 것처럼 로컬에서 동일한 오류가 발생합니다.") : ". 그래서 나는 로컬에서 작동하는 올바른 버전의 gem omniauth-identity, 1.0.0 ' "을 사용하도록하였습니다. 그래서 Heroku는 다른 것을로드하지 않을 것입니다. 그러나 슬프게도,이 버전은 여전히 잘 작동하고 Heroku에 barfs. – gittinOld