如何使用bundler避免将rails作为系统gem安装并期望

时间:2015-07-23 20:57:57

标签: ruby-on-rails ruby gem bundler expect

我试图创建一个新的rails应用程序,目的是不要将gem作为系统gem安装。 起初我将bundler安装为系统gem,制作了一个Gemfile,它只指定了rails并执行了bundle install'。 (在我看来,捆绑可以成为系统宝石......)

mkdir -p /opt/rails/rails_app
cd /opt/rails/rails_app
gem install bundler
bundle init
cp Gemfile /tmp
sed 's/#gem rails/gem rails/' /tmp/Gemfile > Gemfile
bundle config build.nokogiri --use-system-libraries
bundle install --path vendor/bundle

Rails是作为本地宝石安装的。限制在/ opt / rails / rails_app中。

然后我尝试通过新的'。

来制作一个rails应用程序
bundle exec rails new . --skip-bundle

这导致替换了Gemfile,因此显示了一条消息。

Overwrite /opt/rails/rails_app/Gemfile? (enter "h" for help) [Ynaqdh]

通常应该做的只是键入' y'。但是,这一次,我想自动制作一个流浪汉的提供脚本。

所以我尝试expect但它从未奏效。所有结果都是超时或语法错误:

expect -c "
spawn bundle exec rails new . --skip-bundle --quiet
expect \"Overwrite /opt/rails/rails_app/Gemfile? (enter \"h\" for help) \[Ynaqdh\] \"
send \"y\r\"
"

我无法找到此代码和其他解决方案中的错误,而不是使用期望。

2 个答案:

答案 0 :(得分:1)

看来导轨generator

中有@suppress个选项

答案 1 :(得分:0)

您可以使用bundle install --path [directory]在应用内部在本地安装宝石。您会使用' ./ vendor / bundle'作为你的目录。