【问题标题】:Rails 3 Deploying to Heroku syntax error, unexpected $endRails 3 部署到 Heroku 语法错误,意外 $end
【发布时间】:2012-05-16 12:49:27
【问题描述】:

在本地开发环境中成功测试我的“alpha”Rails 3 应用程序后,我将其推送到 Heroku (Cedar) 进行实时测试。推送成功,但应用在启动时崩溃并出现以下错误:

: => Booting WEBrick
: => Ctrl-C to shutdown server  
: /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require':   /app/app/controllers/dives_controller.rb:50: invalid multibyte char (US-ASCII) (SyntaxError)
: /app/app/controllers/dives_controller.rb:50: syntax error, unexpected $end
: Exiting

我检查了意外字符和缺少的结束语句,但似乎找不到任何内容。我没有使用任何多语言字符(据我所知)。

这是我的一些文件,包括:Gemfile、Gemfile.lock、database.yml、dives_controller.rb https://gist.github.com/2632041

这可能与使用 postgres 而没有在我的 database.yml 中正确指定它有关吗?

【问题讨论】:

  • 您在使用数据库吗?如果是这样,您需要在 heroku 上使用 postgres。
  • 您确定您在 gist 中上传的 DivesController 版本与您上传到 Heroku 的版本相同吗?

标签: ruby-on-rails ruby-on-rails-3 deployment heroku syntax-error


【解决方案1】:

如果您查看lines 50 and 51dives_controller.rb,您会注意到之前出现了一些奇怪的空白字符(它们在github 输出中突出显示)。我有一种感觉,那些是导致问题的角色。

它们可能是由于误按了键盘上的一些随机键而出现的。只需删除它们并用 space 替换它们。

【讨论】:

  • 谢谢。这正是问题所在。谢谢。
【解决方案2】:

我不确定为什么会这样,但我删除了我的 dives_controller.rb 中的以下几行,现在应用程序可以正确部署:

#@user = User.where(:facebook_id => current_user.identifier) 
#@dive = @user.dives.create(params[:dive])
#@dive = Dive.new(params[:dive])

【讨论】:

    【解决方案3】:

    Gist 文件中以红色突出显示的空格是non-breaking spaces。开发人员的噩梦。
    您可以要求您的 IDE 或文本编辑器以不同的字符显示它们。

    例如,set listchars=trail:◃,nbsp:• 告诉 VIM 显示 • 不间断空格 和 ◃ 尾随空格

    【讨论】:

      猜你喜欢
      • 2014-12-18
      • 1970-01-01
      • 2018-11-29
      • 2011-02-09
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多