1

新規ユーザーがサイトにサインアップすると、取引インデックスにリダイレクトされる必要があります。これは開発環境では正しく機能しますが、本番環境 (Heroku) では機能しません。実稼働環境では、ユーザー インデックス (存在しない) にリダイレクトされます。

これが私のユーザーコントローラーです:

class UsersController < ApplicationController

  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
    if valid_email? @user.email
      @user.save
      redirect_to deals_path
    else
      flash[:error] = "Please enter a valid email address"
      redirect_to root_path
    end
  end

  private
    def valid_email?(email)
      valid_email_regex = /\A.+@.+\..+\z/i
      email =~ valid_email_regex
   end
end

ここにroutes.rbがあります:

root to: 'users#new'

resources :deals, only: [:index]
resources :users, only: [:new, :create]

以下は rake routes と RAILS_ENV=production rake routes の結果です (どちらも同じ):

    root      /                    users#new
   deals GET  /deals(.:format)     deals#index
   users POST /users(.:format)     users#create
new_user GET  /users/new(.:format) users#new

開発ではすべて正常に動作しますが、実稼働環境では、ユーザー コントローラーの「redirect_to deal_path」行が存在しないかのように動作します。

アプリは開発では SQLite を使用し、本番環境では PostgreSQL を使用していますが、それが関係している可能性がありますか?

アプリは Rails 3 にあり、Heroku でホストされています。

4

1 に答える 1

0

問題は、適切に機能しないウェルカム メールを送信するためのユーザー モデルの before_save フィルターであることが判明しました。before フィルターを削除しましたが、現在は正常に機能しています。興味のある人のためのサーバーログは次のとおりです。

2013-04-08T03:14:07+00:00 app[web.1]: Started POST "/users" for xx.xxx.xx.xxx at 2013-04-08 03:14:07 +0000
2013-04-08T03:14:08+00:00 app[web.1]: Processing by UsersController#create as HTML
2013-04-08T03:14:08+00:00 app[web.1]:   Parameters: {"utf8"=>"✓", "authenticity_token"=>"b4ysVip3iTm8LZmeRxHX3EdX/pH7X6c6SpgF11IpQis=", "user"=>{"email"=>"user@example.com"}, "commit"=>"Sign up"}
2013-04-08T03:14:08+00:00 app[web.1]:   Rendered user_mailer/welcome_email.html.erb (10.9ms)
2013-04-08T03:14:08+00:00 app[web.1]: 
2013-04-08T03:14:08+00:00 app[web.1]: Sent mail to user@example.com (54ms)
2013-04-08T03:14:08+00:00 app[web.1]: Completed 500 Internal Server Error in 344ms
2013-04-08T03:14:08+00:00 app[web.1]: 
2013-04-08T03:14:08+00:00 app[web.1]: SocketError (getaddrinfo: Name or service not known):
2013-04-08T03:14:08+00:00 app[web.1]:   app/models/user.rb:24:in `welcome_email'
2013-04-08T03:14:08+00:00 app[web.1]:   app/models/user.rb:15:in `block in <class:User>'
2013-04-08T03:14:08+00:00 app[web.1]:   app/controllers/users_controller.rb:10:in `create'
2013-04-08T03:14:08+00:00 app[web.1]: 
2013-04-08T03:14:08+00:00 app[web.1]: 
2013-04-08T03:14:08+00:00 heroku[router]: at=info method=POST path=/users host=www.xxx.com fwd="xx.xxx.xx.xxx" dyno=web.1 connect=1ms service=555ms status=500 bytes=0
2013-04-08T03:14:06+00:00 heroku[web.1]: State changed from starting to up
于 2013-04-08T03:35:56.247 に答える