0

我想像heroku一样在rails中制作一个简单的ruby App Engine,我现在正在处理一个问题。

我的想法是:

1.使用rails建立App Engine,使用一个类'App'来处理所有的应用程序。

2.当用户创建一个 ruby​​ 应用程序时,他应该提供它的 git 路径

3.当用户部署它时,我的应用引擎会做这些事情:

  • 将 git 克隆到我服务器中的路径(完成
  • 使用 RVM 指定用户想要的 ruby​​ 版本并为项目创建 gemdir(这里有一些问题
  • 为项目创建一个nginx conf,然后包含它并重新加载nginx(我可以做到

第二步的问题:

这里的代码:

  def start_thin
    Dir.chdir(proj_path) do
      system('rvm use ruby-1.8.7-p352@testname --create')
      system('gem env gemdir')
      success = system ('thin start -s3 --socket ' + self.proj_sock)
      if success
        return true
      end
    end
    return false
  end

当代码在这里运行时,日志告诉我“RVM 不是一个函数……blahblah”,我对登录 shell 和非登录 shell 有所了解,然后我尝试通过编辑 .bashrc 来修复它但同样的问题发生了。

如果我忽略它,应用程序将无法部署,因为加载错误:

myapp.rb:2:in `require': cannot load such file -- sinatra (LoadError)

如果我在该应用程序目录中打开一个终端,我可以使用 Thin 启动它。

我想知道如何像在终端中一样运行 cmd,而不会出现所有这些奇怪的问题?或者如何编辑我的方法来修复它?

谢谢!

4

1 回答 1

1

感谢 Casper 和 GhostRider。

用户和 rvm 设置正确。

经过大量的谷歌和测试后,我发现这是不可能的......最后我通过使用 RVM 的 ruby​​ api 而不是运行系统命令来修复它。如 :

require 'rvm'
env = RVM.current
env.gemset.create('app1')
于 2013-02-05T02:39:08.037 回答