在再次询问之前,我读了" Rubygems,Bundler和RVM之间的关系 ".
好吧,有很多这样的问题,但回答的人说他们使用的是Rubygems,RVM和Bundler,他们没有解释每个问题是如何独立工作的.
当我们安装宝石时,我真的很困惑三者如何孤立地工作.请不要告诉我你的工作方式,这对我有帮助,但是当我们和他们一起玩时,我不会知道发生了什么.
我的困惑可以分解为这些问题.在以下情况下安装宝石的位置:
请通过网络上的资源或您的详细答案帮助我理解这些内容.
我将pg gem添加到我的gemfile中
gem 'pg'
Run Code Online (Sandbox Code Playgroud)
当我跑bundle install,我得到这个错误:
Installing pg (0.10.1) with native extensions /Users/ben/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems/installer.rb:483:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
/Users/benhartney/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file …Run Code Online (Sandbox Code Playgroud) 我注释掉了一个gem,但'bundle install'仍然无法运行.如何找出哪个gem依赖于sys-proctable?
$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Could not find sys-proctable-0.9.2 in any of the sources
$ grep proctable Gemfile
#gem 'sys-proctable', '0.9.2', :path => "vendor/gems"
$ bundle list
Resolving dependencies...
Could not find gem 'rspec-rails (= 2.11.0) ruby' in the gems available on this machine.
$ bundle viz
Resolving dependencies...
Could not find gem 'rspec-rails (= 2.11.0) ruby' in the gems available on this machine.
$ bundle -v
Bundler …Run Code Online (Sandbox Code Playgroud) 我试图mysql2通过Bundler 安装gem,但它一直死于以下错误:
** executing command
/home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems/installer.rb:483:in 'rescue in block in build_extensions':
ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
/home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb --with-mysql-config=/usr/bin/mysql_config
checking for rb_thread_blocking_region()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing. please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration …Run Code Online (Sandbox Code Playgroud) 我正在执行以下脚本:
gem install rdoc --no-document
gem install bundle
bundle
Run Code Online (Sandbox Code Playgroud)
输出:
+ gem install rdoc --no-document
Successfully installed rdoc-6.1.1
1 gem installed
+ gem install bundle
Successfully installed bundle-0.0.1
Parsing documentation for bundle-0.0.1
Done installing documentation for bundle after 2 seconds
1 gem installed
1 gem installed
+ bundle install
/usr/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
from /usr/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
from /srv/myuser/.gem/ruby/2.5.0/bin/bundle:23:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我添加/srv/myuser/.gem/ruby/2.5.0/bin到我的路径,所以我能够安装宝石.
该gem env节目
RubyGems Environment:
- RUBYGEMS VERSION: 2.7.7 …Run Code Online (Sandbox Code Playgroud) 我知道在使用时gem install,gem将存储在/home/username/.rvm/gems/下,gem下安装gem.
但是如果我使用Bundler并在Gemfile中指定gem,那么当我运行bundle install时,那些gem会被存储在哪里?如果我已经安装了gem gem install,如果我运行bundle install,它会使用之前安装的gem gem install吗?
我最近一直在研究汇总,看看它与Webpack和其他捆绑商的区别.我遇到的一件事是,由于"扁平捆绑",它对图书馆更好.这是基于一条推文和最近的React PR来使用Rollup.
根据我的经验,由于围绕扁平捆绑(例如吊装)的更好优化,Rollup更擅长构建库.1/2
如果您使用代码分割等捆绑应用程序,Webpack 2可能更适合您.2/2
我不完全确定我明白这意味着什么.扁平捆绑是指什么?我知道Rollup的文档提到了树形图,以帮助减少包大小,但Webpack也有办法做到这一点.也许我完全不理解这个概念.
请注意,这不是关于Rollup vs Webpack的比较问题.对于那些对此感兴趣的人,Webpack有一个比较图表.这主要是问平板捆绑是什么?Rollup可能会在内部做些什么来实现这一目标?
每当我做bundle install所有的宝石安装在
app_dir/vendor/bundle
Run Code Online (Sandbox Code Playgroud)
路径并消耗大量磁盘空间.我也尝试安装宝石,它应该安装,即宝石集,而开发由此:
bundle install --no-deployement
Run Code Online (Sandbox Code Playgroud)
但这对我来说并不适合安装宝石vendor/bundle.如何让它全局安装在所有应用程序或ruby gemsets位置?我也试过删除.bundle/config但没有改变.
我在用:
rvm version: 1.23.14
ruby version: 2.0.0-p247
rails 3.2.13
Run Code Online (Sandbox Code Playgroud)
这是我的~/.bash_profile:
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
eval "$(rbenv init -)"
alias pg='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log'
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
Run Code Online (Sandbox Code Playgroud)
我的~/.bashrc:
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
Run Code Online (Sandbox Code Playgroud)
您可能需要的其他一些信息:
aman@Amandeeps-MacBook-Pro …Run Code Online (Sandbox Code Playgroud) 我做了一个bundle show并获得了一个gem目录的完整路径.
不幸的是,我删除了目录rm -r gem_path.然后我的rails应用程序不再工作了.如果我尝试启动服务器或启动rails控制台,则会输出以下错误:
<class:Application>:未初始化的常量MyAPP::Application::Gem(NameError)
我该怎么做才能还掉它?
我试图bundle install或bundle update希望强制捆绑搜索gem并将其安装回来,但是没有用.
我也尝试删除Gemfile.lock并运行bundle install.什么都没有改变,同样的错误.
有问题的宝石就是可以作为标记.
我收到以下错误,即使我目前确实安装了Bundler gem(当我运行$ gem list时出现).
ERROR: Gem bundler is not installed, run `gem install bundler` first.
Run Code Online (Sandbox Code Playgroud)
我正在使用RVM,我的$ PATH如下:
/Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/bin:
/Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@global/bin:
/Users/cjstingl/.rvm/rubies/ruby-1.9.2-p290/bin:
/Users/cjstingl/.rvm/bin:
/Users/cjstingl/.bin:
/usr/local/sbin:
/usr/local/Cellar/php/5.3.6/bin:
/usr/local/share/python:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)
这也是我的宝石环境
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.15
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.2.0]
- INSTALLATION DIRECTORY: /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd
- RUBY EXECUTABLE: /Users/cjstingl/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
- EXECUTABLE DIRECTORY: /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-11
- GEM PATHS:
- /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd
- /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@global
- GEM CONFIGURATION:
- :update_sources => true
- …Run Code Online (Sandbox Code Playgroud)