是否可以从ruby系统调用运行bundle install?
我正在尝试安装gems并为另一条路径下的项目运行测试...
例如,命令是:
"cd /some/other/project && bundle install && gem list && rspec spec"
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想在一个项目中通过rake文件运行测试,同时确保安装该项目的相关gem.
如果我运行,CD似乎正常工作:
"cd /some/other/project && pwd"
Run Code Online (Sandbox Code Playgroud)
它确实提供了正确的路径.但是,如果我捆绑安装&& gem环境,它似乎安装当前文件夹的gem,并且不使用其他项目的Gemfile,随后rspec规范不起作用.
总结一下,运行'rspec spec'的最佳方法是什么,对于rakefile中的另一个项目,还确保相关的gem可用?
我正在与一个开发团队合作,我们都在使用我们的存储库中的相同Gemfile.因为我在Mac上工作,而其他人正在使用Ubuntu,我们在我们的存储库中也有一个Gemfile.local.example文件,它具有适用于每个操作系统的通知宝石,所有这些都被注释掉了.
我没有评论我的操作系统的宝石并保存为新文件,而不是版本控制Gemfile.local.现在我想"捆绑安装"从两个文件安装gem.
我找不到任何关于这样做的好文档.
宝石打算支持宝石a或b作为功能的替代品。
在代码中,我检查defined?(A)是否可以恢复b正常。
但是作为宝石开发者,如何指定这些依赖关系?
1)我要在Gemfile中放入什么。
group :development, :test do
gem 'a', :require => false
gem 'b', :require => false
end
Run Code Online (Sandbox Code Playgroud)
这允许Bundle.require(:test)不自动要求a,b吗?
2)当我们退回到测试中时,如何明确要求a并b分别模拟(或模拟)场景b?
3)还有我怎么指定,要么a或者b是创业板的先决条件。
谢谢
我做了rails new awesomeapp那么当我去做rails s,我得到一个错误,JSON-1.8.1缺失.但是当我进行捆绑安装时,它已经清楚地列出了.我错过了什么?
Donalds-MacBook-Pro:awesomeapp · rails s
Could not find json-1.8.1 in any of the sources
Run `bundle install` to install missing gems.
Donalds-MacBook-Pro:awesomeapp · bundle install
Using rake 10.3.2
Using i18n 0.6.9
Using json 1.8.1
Using minitest 5.3.5
Using thread_safe 0.3.4
Using tzinfo 1.2.1
Using activesupport 4.1.0
Using builder 3.2.2
Using erubis 2.7.0
Using actionview 4.1.0
Using rack 1.5.2
Using rack-test 0.6.2
Using actionpack 4.1.0
Using mime-types 1.25.1
Using polyglot 0.3.5
Using treetop 1.4.15 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Ruby 2.2.3将我们的应用程序从Rails 3.2.22升级到Rails 4.2.4.
这是我到目前为止所做的:
rails, "~> 4.2.4"bundlebundle update rails完整的成绩单如下.
我们的Gemfile中没有指定ActiveRecord,所以我不明白它锁定了什么或在哪里修复它?
Craigs-MacBook-Pro~/Work/mbc(master|?) % git checkout -b rails-424
Switched to a new branch 'rails-424'
Craigs-MacBook-Pro~/Work/mbc(rails-424|?) % vim Gemfile
Craigs-MacBook-Pro~/Work/mbc(rails-424|?1) % bundle
Fetching gem metadata from https://rubygems.org/........
Fetching version metadata from https://rubygems.org/...
Fetching dependency metadata from https://rubygems.org/..
You have requested:
rails ~> 4.2.4
The bundle currently has rails locked at 3.2.22.
Try running `bundle update rails`
Craigs-MacBook-Pro~/Work/mbc(rails-424|?1) % bundle update rails
Fetching gem metadata from https://rubygems.org/........
Fetching version …Run Code Online (Sandbox Code Playgroud) 当我gem list从我的app文件夹中使用时,终端显示我本地计算机上安装的所有gem的列表.我想改为看项目相关的宝石.
I'm building a gem that uses rails-assets-growl gem. This gem can be added to my Gemfile using a different source than 'https://rubygems.org' like this:
source 'https://rails-assets.org' do
gem 'rails-assets-growl'
end
Run Code Online (Sandbox Code Playgroud)
在开发模式下可以正常工作。但是,当我在rubygems.org咆哮中发布我的gem时,它并不包含在依赖关系中。
我认为,这是因为我需要
https://rails-assets.org在gemspec中指定源而不是Gemfile。但是,我不确定。
因此,问题是:
如何在gemspec文件中指定gem的来源?
bcrypt的宝石在https://rubygems.org/gems/bcrypt/versions/3.1.11
显示了这种用法
gem 'bcrypt', '~> 3.1', '>= 3.1.11'
Run Code Online (Sandbox Code Playgroud)
为什么有两个版本的精子悲观操作符?
我们通常只使用一个版本用于其他宝石
我们Gemfile的git储存库中目前有一个。但是,有一个gem我只能在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将其添加到我们的中Gemfile,但是每次我检出到master / dev main分支时,由于与跟踪的gemfile冲突,都必须将其删除。
我想要的是类似a的东西Gemfile.local,它将继承从导入的宝石,Gemfile但也允许将新的宝石导入那里以仅在我的机器上使用。该文件将在中被忽略.gitignore。这有可能吗?
我有一台新机器并且安装了rbenv(我之前总是使用rvm).这个宝石现在不会加载到我的应用程序中.我没有更改代码.现在和现在的唯一区别是rbenv.
Loading development environment (Rails 5.2.1)
irb(main):001:0> SportsApi::Fetcher::Score::NBA
Traceback (most recent call last):
1: from (irb):1
NameError (uninitialized constant SportsApi::Fetcher)
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我将gem克隆到我的本地机器,然后更改Gemfile中的路径,它就会加载/工作.
# gem 'sports_api', git: 'git@github.com:mikesilvis/sports_api.git'
gem 'sports_api', path: '~/dev/sports_api'
irb(main):001:0> SportsApi::Fetcher::Score::NBA
=> SportsApi::Fetcher::Score::NBA
Run Code Online (Sandbox Code Playgroud)
为什么它在本地路径上工作而在git路径上不工作?关于我可以做些什么来解决这个问题(使用git路径)的任何想法?先感谢您.
编辑:这是完整的回溯.
uninitialized constant SportsApi::Fetcher
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/active_support.rb:74:in `block in load_missing_constant'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/active_support.rb:8:in `without_bootsnap_cache'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/active_support.rb:74:in `rescue in load_missing_constant'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/active_support.rb:56:in `load_missing_constant'
(irb):2:in `irb_binding'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/2.5.0/irb/workspace.rb:85:in `eval'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/2.5.0/irb/workspace.rb:85:in `evaluate'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/2.5.0/irb/context.rb:380:in `evaluate'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/2.5.0/irb.rb:491:in `block (2 levels) in eval_input'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/2.5.0/irb.rb:623:in `signal_status'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/2.5.0/irb.rb:488:in `block in eval_input'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/2.5.0/irb/ruby-lex.rb:246:in `block (2 levels) in each_top_level_statement'
/Users/myusername/.rbenv/versions/2.5.3/lib/ruby/2.5.0/irb/ruby-lex.rb:232:in …Run Code Online (Sandbox Code Playgroud)