【问题标题】:Errors when running Rails application in production mode在生产模式下运行 Rails 应用程序时出错
【发布时间】:2013-11-26 16:37:55
【问题描述】:

我是在生产模式下配置 Rails 应用程序的新手。我的 Rails 应用程序工作正常,但是当我尝试在生产模式下运行它时,它在启动时崩溃:

 rails s
=> Booting WEBrick
=> Rails 4.0.1 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server

这里一切都很好,并且:

RAILS_ENV=production rails c
/Users/dawid/.rvm/gems/ruby-2.0.0-p195@rails-4.0/gems/activesupport-4.0.1/lib/active_support/dependencies.rb:229:in `require': /Users/dawid/workspace/demioorg/Dineria/backend/app/controllers/users/users_controller.rb:6: syntax error, unexpected ':', expecting keyword_end (SyntaxError)
      render_status: 200,

我只是想知道为什么它在开发模式下工作而不是在生产模式下工作?什么会导致该错误?

编辑:

class Users::UsersController < Devise::SessionsController
  respond_to :json

  def is_user
    if current_user.present?
      render_status: 200,
        json: {
          success: !User.find_by_name(params[:name]).blank?
        }
    end
  end

end

【问题讨论】:

  • 你能展示你的 users_controller 吗?
  • 我用 users_controller 编辑了我的问题。但我不知道为什么它只在开发模式下才能正常工作
  • 如果你尝试它是否有效:render :json => {success: ...}, :status => 200 ?
  • 更改render_status: 200 >> render status: 200

标签: ruby-on-rails production-environment


【解决方案1】:

试试这个格式:

render :status => 200, 
       :json   => {success: User.exists?(:name => params[:name])}

我觉得它看起来更漂亮,也更合乎逻辑。

另外.exists? 看起来比你的代码好一点。

【讨论】:

  • 还有 .exists 吗?看起来好多了
【解决方案2】:

Rails documentation 展示了如何为render 使用:status 选项:

2.2.11.4 :status 选项

Rails 会自动生成带有正确 HTTP 状态代码的响应(在大多数情况下,这是 200 OK)。您可以使用 :status 选项来更改:

render status: 500 
render status: :forbidden

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2013-12-10
    • 2018-03-25
    相关资源
    最近更新 更多