Bundle install从错误的目录运行

时间:2012-04-17 05:23:46

标签: ruby gem rvm bundler thor

我正在为一些内部项目构建一个简单的thor生成器,似乎无法从正确的目录运行bundle install

当我运行新的[APP_NAME]功能时,它应该创建目录和文件,然后运行bundle install来安装应用程序所需的宝石。

生成器函数的来源:

def create
  puts "Creating application #{name}"

  directory 'application', "#{name}"

  Dir.chdir("#{Dir.pwd}/#{name}") do
    puts `bundle install`
  end
end

控制台输出来自运行调用此create方法的命令:

$ bundle exec bin/my_gem new test_app
Creating application test_app
      create  test_app
      create  test_app/Gemfile
      create  test_app/Guardfile
      create  test_app/README.md
      create  test_app/app/controllers
      create  test_app/app/helpers
      create  test_app/app/models
      create  test_app/app/views
Using thor (0.14.6) 
Using my_gem (0.0.1) 
Using bundler (1.1.3) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

正如您所看到的,它正在运行bundle install,但它在我当前的目录(thorbundlermy_gem)中运行,而不是{{ 1}}目录(test_appguardguard-coffeescript和其他人。)

运行guard-lessls等其他命令可获得预期结果:

pwd

Gemfile
Guardfile
README.md
app

不确定它是否有任何区别,但我使用RVM来管理我的红宝石。

2 个答案:

答案 0 :(得分:19)

听起来您的应用已经在使用捆绑包,而且您遇到了捆绑包内置捆绑问题。试试这个:

Bundler.with_clean_env do
  puts `bundle install`
end

我猜你正在发生的事情是你的外部捆绑器将BUNDLE_GEMFILE env变量设置为你的应用程序的Gemfile,然后你的内部捆绑器最终会继承它。

答案 1 :(得分:-1)

请尝试这个我一定会帮到你。

      rvm gemset create app_name


      rvm use ruby-1.9.2@app_name

Ruby版本您还使用了什么。

然后安装bundler gem

      gem install bundler.           

然后捆绑安装并运行服务器..