【问题标题】:Spree Commerce Syntax ErrorSpree Commerce 语法错误
【发布时间】:2013-02-04 19:49:48
【问题描述】:

我真的不认为有语法问题,我认为这可能是版本问题,不过,你们觉得这是什么样的?请注意,这只发生在生产环境中。我正在使用乘客(因为它是 Rails 3,我不喜欢在生产中使用 beta gem):

宝石版本:1.8.23 导轨版本:3.2.11 Ruby 版本:1.9.3p374(我升级它认为它会有所帮助,我之前认为是 1.8.7)

# rails s -e production
=> Booting WEBrick
=> Rails 3.2.11 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/lib/ruby/gems/1.8/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `polyglot_original_require': /usr/lib/ruby/gems/1.8/gems/spree_api-1.3.1/app/controllers/spree/api/product_properties_controller.rb:11: syntax error, unexpected '.' (SyntaxError)
      .page(params[:page]).per(params[:per_page])
       ^
    from /usr/lib/ruby/gems/1.8/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:359:in `require_or_load'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:313:in `depend_on'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:225:in `require_dependency'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:439:in `eager_load!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:438:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:438:in `eager_load!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:436:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:436:in `eager_load!'
    from /usr/lib/ruby/gems/1.8/gems/devise-2.2.3/lib/devise/controllers/url_helpers.rb:47:in `to_proc'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/application/railties.rb:8:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/application/railties.rb:8:in `all'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:434:in `eager_load!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/application/finisher.rb:53
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `instance_exec'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `run'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:55:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/application.rb:136:in `initialize!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/railtie/configurable.rb:30:in `send'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /home/$user/rails_apps/store/config/environment.rb:5
    from /usr/lib/ruby/gems/1.8/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `polyglot_original_require'
    from /usr/lib/ruby/gems/1.8/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /home/$user/rails_apps/store/config.ru:3
    from /usr/lib/ruby/gems/1.8/gems/rack-1.4.4/lib/rack/builder.rb:51:in `instance_eval'
    from /usr/lib/ruby/gems/1.8/gems/rack-1.4.4/lib/rack/builder.rb:51:in `initialize'
    from /home/$user/rails_apps/store/config.ru:0:in `new'
    from /home/$user/rails_apps/store/config.ru:0

如果需要更多信息,请告诉我,我可以发送任何要求的信息(当然是在合理范围内)。

编辑添加:

我修正了任性的“。”但现在看看这个:

# rails s -e production
=> Booting WEBrick
=> Rails 3.2.11 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/lib/ruby/gems/1.8/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `polyglot_original_require': /usr/lib/ruby/gems/1.8/gems/spree_api-1.3.1/app/controllers/spree/api/v1/base_controller.rb:68: odd number list for Hash (SyntaxError)
      render :text => { exception: exception.message }.to_json,
                                  ^
/usr/lib/ruby/gems/1.8/gems/spree_api-1.3.1/app/controllers/spree/api/v1/base_controller.rb:68: syntax error, unexpected ':', expecting '}'
      render :text => { exception: exception.message }.to_json,
                                  ^
/usr/lib/ruby/gems/1.8/gems/spree_api-1.3.1/app/controllers/spree/api/v1/base_controller.rb:68: syntax error, unexpected '}', expecting kEND
      render :text => { exception: exception.message }.to_json,
                                                      ^
/usr/lib/ruby/gems/1.8/gems/spree_api-1.3.1/app/controllers/spree/api/v1/base_controller.rb:69: syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.'
             :status => 422 and return
                       ^
    from /usr/lib/ruby/gems/1.8/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:359:in `require_or_load'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:313:in `depend_on'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:225:in `require_dependency'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:439:in `eager_load!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:438:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:438:in `eager_load!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:436:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:436:in `eager_load!'
    from /usr/lib/ruby/gems/1.8/gems/devise-2.2.3/lib/devise/controllers/url_helpers.rb:47:in `to_proc'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/application/railties.rb:8:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/application/railties.rb:8:in `all'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:434:in `eager_load!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/application/finisher.rb:53
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `instance_exec'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `run'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:55:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `each'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `run_initializers'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/application.rb:136:in `initialize!'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/railtie/configurable.rb:30:in `send'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.2.11/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /home/jackal/rails_apps/store/config/environment.rb:5
    from /usr/lib/ruby/gems/1.8/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `polyglot_original_require'
    from /usr/lib/ruby/gems/1.8/gems/polyglot-0.3.3/lib/polyglot.rb:63:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
    from /home/jackal/rails_apps/store/config.ru:3
    from /usr/lib/ruby/gems/1.8/gems/rack-1.4.4/lib/rack/builder.rb:51:in `instance_eval'
    from /usr/lib/ruby/gems/1.8/gems/rack-1.4.4/lib/rack/builder.rb:51:in `initialize'
    from /home/jackal/rails_apps/store/config.ru:0:in `new'
    from /home/jackal/rails_apps/store/config.ru:0

【问题讨论】:

  • 哦,这是第 11 行周围的区域: def index @product_properties = @product.product_properties.ransack(params[:q]).result + .page(params[:page]).per (params[:per_page]) respond_with(@product_properties) end
  • 我们需要查看您的代码(点击“编辑”将其添加到您的问题中)。

标签: ruby-on-rails ruby passenger


【解决方案1】:

看起来您使用的是 Ruby 1.8(基于路径中的 /usr/lib/ruby/gems/1.8/),但 render :text => { exception: exception.message }.to_json 中的哈希语法仅适用于 Ruby 1.9。

在 Ruby 1.9 中,您可以说:h = {key: 1} 在 Ruby 1.8 中,您必须使用 h = {:key => 1}

【讨论】:

  • 嗯,做到了。谢谢!
【解决方案2】:

任性的“.”在这个开头

.page(params[:page]).per(params[:per_page])

排队

@product_properties = @product.product_properties.ransack(params[:q]).result + .page(params[:page]).per(params[:per_page])

就像它在错误消息开头所说的那样。

【讨论】:

  • 这就是我害怕的。显然,正如错误消息所述,这是一个语法错误——但是,对于我没有使用的 Ruby 版本,这是一个语法错误吗?
  • 我不这么认为。我很确定这通常是 Ruby 语言中的语法错误,与哪个版本无关。
  • 我编辑了我的原始帖子,无法在此处添加评论。
猜你喜欢
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多