我想像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,而不会出现所有这些奇怪的问题?或者如何编辑我的方法来修复它?
谢谢!