【问题标题】:Rails gem is absent after Capistrano deployCapistrano 部署后 Rails gem 不存在
【发布时间】:2015-05-20 12:05:18
【问题描述】:

我正在尝试在 Ubuntu 服务器上部署我的应用程序。我安装了 Nginx/Phusion Passenger 并使用 Capistrano 部署了我的应用程序,它可以工作(我可以打开 URL 并查看项目)。我使用 RVM 并且只安装了一个我之前安装的 Ruby 版本(ruby 2.0.0p643)。但是当我转到我的项目文件夹并尝试执行“rails c production”时,我收到以下错误:

The program 'rails' can be found in the following packages:
 * ruby-railties-3.2
 * ruby-railties-4.0
Try: sudo apt-get install <selected package>

我不明白这个错误是什么意思 - 我上传了我的 Rails 应用程序,它可以工作,我看到呈现的 HTML 页面,但这个错误告诉我其他的东西 :)。另外,如果我执行“gem list”,我会得到以下列表:

*** LOCAL GEMS ***

bigdecimal (1.2.0)
bundler (1.9.9)
bundler-unload (1.0.2)
executable-hooks (1.3.2)
gem-wrappers (1.2.7)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
rubygems-bundler (1.4.4)
rvm (1.11.3.9)
test-unit (2.0.0.0)

我在这个列表中没有看到“rails”,但正如我在我的应用程序工作之前所说的那样!!!请告诉我,我做错了什么。提前致谢!

【问题讨论】:

  • 我的应用程序可以工作,没有 Rails 怎么能工作??

标签: ruby-on-rails ruby nginx capistrano bundler


【解决方案1】:

你需要使用,

bundle exec rails c production

这是因为您正在使用 rvm 将 gem 捆绑在命名空间内(在生产中位于 /vendor 内),这在捆绑上下文之外将不可用。

注意:

可以使用 Capistrano (http://paulgoscicki.com/archives/2011/10/tell-bundler-to-install-gems-globally-when-using-capistrano/) 在捆绑程序上下文之外安装 Gems

【讨论】:

  • 感谢它的工作!如何消除向每个命令添加“bundle exec”的需要?谢谢!
  • 添加bundle exec 实际上很好,因为它使用gemfile 中指定的gem,否则您的命令将使用全局gem。如果您不愿意使用 bundle exec,那么您需要将 gem 安装到全局命名空间,该命名空间可以在 bundler 上下文之外访问。
  • 好的,谢谢!但是我如何才能在全球范围内安装 gems?在我的本地机器上,我使用 RVM 和 Ruby,但我没有为每个命令执行 'bundle exec'
  • 您可以使用 Capistrano 全局安装 gems,查看paulgoscicki.com/archives/2011/10/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 2023-04-06
  • 2020-08-11
相关资源
最近更新 更多