运行“bundle install”命令失败

时间:2011-10-17 02:52:44

标签: ruby bundle thor

所有

在特定目录中创建一些文件后,我使用以下命令。它给我一个错误信息。

命令

desc "new project_name", "new a project with a name"
def new(project_name = 'my_project')
    directory 'doc', project_name
    path =  Dir.pwd + '/' + project_name
    system("cd #{path}")
    run('bundle install')

    #But this command is working that makes me so confusing
    #run("cd #{path} && bundle install")

    #puts "Initializing complete"
end

错误

create  aaaaaaa/views/index.slim
create  aaaaaaa/views/layout.slim
run  bundle install from "."
Could not locate Gemfile

在初始化新项目时,我看到直接运行此导轨的导轨bundle install,导轨如何做到这一点?我如何使这个命令工作。

2 个答案:

答案 0 :(得分:3)

system创建一个子流程然后退出。子进程更改了目录,然后完成了,但是您的脚本仍然认为它位于进程认为存在的任何工作目录中。

如果要更改运行脚本的进程的工作目录,请使用Dir.chdir()

答案 1 :(得分:0)

Rails实际上使用了一个小小的黑客"打印" bundle install命令到shell并运行它。注意输出中的后退滴答。

print `"#{Gem.ruby}" -rubygems "#{Gem.bin_path('bundler', 'bundle')}" #{command}`

我还认为系统命令并不一定会改变过程'当前工作目录(根据Thor的运行命令)。