重新部署Rails应用程序会导致与Passenger的新捆绑错误

时间:2011-09-14 18:33:16

标签: ruby-on-rails apache passenger bundler

我几天前将我的第一个rails应用程序部署到了生产服务器。从那时起,我一直在我的开发机器上进行一些修复工作,然后通过git将它们推送到生产服务器。我触摸了restart.txt文件,然后重新启动了Apache,现在我收到了一个乘客错误,我认为这与宝石和捆绑包有关。

当我第一次开始开发时遇到了一个问题(here),我删除了.bundle目录。然后我在我的开发机器上再次运行bundle install,当我修复了一些错误时,一切都很顺利。

现在我已准备好重新部署应用程序的下一个版本,在发现这些错误之后,我检查并注意到我甚至没有.bundle目录。 bundle install不会创建新的。我假设没有那个没什么可行的?我应该只是手动创建必需的文件,还是有命令重新生成这些文件?

编辑以添加错误:syntax error on line 3, col 2: adapter:sqlite3'

database.yml

# SQLite version 3.x
gem install sqlite3
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

2 个答案:

答案 0 :(得分:3)

gem install sqlite3列表中的database.yml实际上是否存在于该文件中?如果是这种情况,那就是错误的原因,因为它是无效的YAML。此外,该语句在这里没有意义,因为文件既不被bundler也不被ruby解释。

充其量,只需删除(或评论)那里的陈述并尝试获取。

编辑:通常,在YAML中,空格(尤其是前导空格)非常重要。不要在这里混合空格和标签。它会使解析器混淆。还需要在键和值之间存在空格,如此

key: value
#   ^ this space is important!

有关YAML语法的详细信息,请参阅YAML's Wikipedia article

答案 1 :(得分:1)

@Paul,您可以尝试更新您的gem文件,如下所示

group :production do
  # gem 'mysql2' # disabled to debug Paul's issue.
  gem 'sqlite3-ruby', :require => 'sqlite3'
end

group :development do
  gem 'sqlite3-ruby', :require => 'sqlite3'
end

让我知道这是怎么回事。