我试图创建一个新的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\"
"
我无法找到此代码和其他解决方案中的错误,而不是使用期望。
答案 0 :(得分:1)
看来导轨generator
中有@suppress
个选项
答案 1 :(得分:0)
您可以使用bundle install --path [directory]
在应用内部在本地安装宝石。您会使用' ./ vendor / bundle'作为你的目录。