2011-10-17 124 views
0

全部,运行“bundle install”命令失败

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

命令

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当初始化一个新项目的导轨,导轨可怎么办呢?我如何使这个命令工作。

+0

系统命令是否从不同位置运行“cd/path_to_directory”?也许从/开始也许你应该尝试做一个光盘到一个绝对目录,并检查是否有效。 – Genzume

+0

我编辑了我的问题进行修复。我确定'cd'的目录路径是正确的。 – coolesting

回答

3

system创建子流程然后退出。子进程改变了目录然后完成了,但是你的脚本仍然认为它在任何进程认为它所在的工作目录中。

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

+0

很好,在'system(“cd#{path}”)之前添加命令'Dir.chdir(path)''很好。 – coolesting

0

Rails实际上会使用一些小技巧来将bundle install命令“打印”到shell并运行它。注意输出中的后退标记。

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

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