你怎么撤消运行
bundle install --without development
Run Code Online (Sandbox Code Playgroud)
现在,我在开发组中有宝石被忽略,因为我运行了一次...(注意我已经尝试删除gemfile.lock无济于事)
TL; DR
$ gem-based-binary _version_ args表示法指定要执行的版本.bundle exec指定版本的Gemfile时使用.gem install rails -v 3.2.13
rails _3.2.13_ new Project2
cd Project2
bundle exec rails server
Run Code Online (Sandbox Code Playgroud)
更新时间: 2015-06-04
我三年前写过这个问题.部分地,它是基于错误的假设,部分情况从那时起发生了变化.感谢@indirect的原始答案,我想提请注意@kelvin的更新(不太热烈)的答案,如上所述.
我的错误假设:一次只能安装一个gem的单个版本,因此需要gemsets来隔离命名空间.不对.可以同时安装多个版本的gem.从命令行调用时将使用最新的一个,除非您有一个Gemfile指定版本约束并通过命令调用命令bundle exec,或指定版本作为其第一个参数.
另请参阅如何从命令行调用旧版本的gem?re:下划线版本表示法.
原始问题:
我有多个项目正在使用不同版本的Rails.我有一个工作流程(如下所述),用于使用特定版本的rails创建项目,并保持项目彼此隔离.我想尝试其他工作流程,特别是使用rbenv而不是RVM,但目前尚不清楚如何这样做.
问题:当使用rbenv和bundler而不是rbenv-gemset或rvm 时,创建多个rails项目 的最佳当前实践是什么,每个项目使用不同版本的rails .
用例: 我有两个rails项目,名为ProjectA和ProjectB.ProjectA是使用一个版本的rails("RailsA")开发的,而ProjectB使用不同的版本("RailsB").如何安装两个版本?
GEMSETS方法: 当我第一次开始使用Rails开发时,我使用了RVM.除了支持多个并发安装的ruby之外,RVM还支持具有多个命名宝石集.每个项目都有自己独立的宝石集合(包括rails本身),称为gemset:
rvm gemset create RailsA
rvm gemset use RailsA
# RailsA. Note: My question is not version-specific.
gem install rails --version …Run Code Online (Sandbox Code Playgroud) 我正在努力将我的代码推送到Heroku.在搜索Google和Stack Overflow问题后,我找不到解决方案.这是我尝试"git push heroku master"时得到的结果:
Heroku receiving push
-----> Rails app detected
-----> Detected Rails is not set to serve static_assets
Installing rails3_serve_static_assets... done
-----> Gemfile detected, running Bundler version 1.0.3
Unresolved dependencies detected; Installing...
Fetching source index for http://rubygems.org/
/usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:300:in `open_uri_or_path': bad response Not Found 404 (http://rubygems.org/quick/Marshal.4.8/mail-2.2.6.001.gemspec.rz) (Gem::RemoteFetcher::FetchError)
from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:172:in `fetch_path'
.
....
Run Code Online (Sandbox Code Playgroud)
最后:
FAILED: http://docs.heroku.com/bundler
! Heroku push rejected, failed to install gems via Bundler
error: hooks/pre-receive exited with error code 1
To git@heroku.com:myapp.git
! [remote rejected] master …Run Code Online (Sandbox Code Playgroud) 我只是不明白.我想,Bundler的开发是为了解决宝石之间的版本冲突.因此我require "bundler/setup"知道Bundler将加载我所有宝石及其依赖项的正确版本.现在,RVM非常适合管理多个Rubies,我知道,但为什么我应该关心Gemset功能呢?我在这里想念一下吗?它能使我的开发更容易吗?也许,你们中的一些人可以给我一些关于开发和生产的完美RVM + Bundler工作流程的一些提示.
我也不知道RVM何时开始切换到另一个Ruby.我知道.rvmrc我的项目中可以有一个文件,但是我必须cd到这个目录才能进行切换吗?
此外,我通常使用Passenger进行开发,因为Passenger.prefpane在Mac OS中集成非常棒.我还能用RVM做到这一点还是有更好的方法呢?Passenger是否识别.rvmrc文件并切换到正确的Gemset?
我刚刚从rvm切换到rbenv,我正在尝试使用bundler进行gem管理.运行bundle install并尝试运行一个简单的sinatra应用程序(ruby app.rb),我得到这个:
Could not find haml-3.1.4 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)
bundle install再次跑步没有效果.还尝试bundle update了另一个问题回复的建议.
这是我的Gemfile:
source "http://rubygems.org"
gem "sinatra"
gem "haml"
Run Code Online (Sandbox Code Playgroud)
这就是bundle show产生的
* bundler (1.0.22)
* haml (3.1.4)
* rack (1.4.1)
* rack-protection (1.2.0)
* sinatra (1.3.2)
* tilt (1.3.3)
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序所需要的:
require "rubygems"
require "bundler/setup"
require 'sinatra'
Run Code Online (Sandbox Code Playgroud)
我敢说这是一种路径问题,其中bundler和rbenv没有一起玩.我试过通过rbenv的文档查看,但无法找到任何东西.
注意:在另一个sinatra应用程序中,我尝试运行它时会得到以下内容:
Could not find addressable-2.2.7 in any of the sources
Run `bundle …Run Code Online (Sandbox Code Playgroud) 这样做时我收到以下错误 bundle install
Make sure that `gem install couchbase -v '1.3.3'` succeeds before bundling.
Run Code Online (Sandbox Code Playgroud)
现在,我没有把这个宝石包括在内Gemfile,所以它来自一些依赖.我怎么能弄清楚哪个宝石依赖于这个沙发基础宝石?
因为bundle install失败了,我不必Gemfile.lock弄清楚这种依赖性.
运行bundle install时出错
Installing mysql2 (0.3.11) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
...
Make sure that `gem install mysql2 -v '0.3.11'` succeeds before bundling.
Run Code Online (Sandbox Code Playgroud)
当我运行确保gem install mysql2 -v '0.3.11'.我仍然得到相同的错误.
无法在 macos-10.15.6 上使用 ruby-2.6.6 捆绑安装 puma 4.3.5 或 gem puma 尝试捆绑我的项目的依赖项,但 puma 4.3.5 出现错误。有人知道这个吗?
xxxxxxxxxxxx
这是错误内容:
fetching puma 4.3.5
Installing puma 4.3.5 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/lxj/.rvm/gems/ruby-2.6.6/gems/puma-4.3.5/ext/puma_http11
/Users/lxj/.rvm/rubies/ruby-2.6.6/bin/ruby -I /Users/lxj/.rvm/rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0 -r ./siteconf20200731-28585-1eobsvu.rb extconf.rb
checking for BIO_read() in -lcrypto... yes
checking for SSL_CTX_new() in -lssl... yes
checking for openssl/bio.h... yes
checking for DTLS_method() in openssl/ssl.h... yes
checking for TLS_server_method() in openssl/ssl.h... yes
checking for SSL_CTX_set_min_proto_version in openssl/ssl.h... yes
creating Makefile
current directory: …Run Code Online (Sandbox Code Playgroud) 有没有办法在假装模式下运行bundle update,类似于Rails生成器的-p(假装)标志或cap -n(干运行)标志?
我想象的是:
$> bundle update -p
Fetching source index for http://rubygems.org/
The following gems have updated versions:
...
list of gems
...
Run Code Online (Sandbox Code Playgroud) 我刚刚在虚拟机中运行的虚拟ubuntu 12.04 32bit上安装了RVM,Ruby,Rails等.现在我遇到了第一个rails项目bundle install或bundle update需要很长时间的问题.即使我用rails创建一个新项目(包括bundle install).
我只使用标准宝石:
source 'https://rubygems.org'
gem 'rails', '3.2.12'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :development do
gem 'sqlite3', '1.3.5'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '3.2.5'
gem 'coffee-rails', '3.2.2'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '1.2.3'
end
gem 'jquery-rails', '2.0.2' …Run Code Online (Sandbox Code Playgroud)