标签: gemfile

通过CLI/Ruby系统调用捆绑安装

是否可以从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可用?

ruby bundler gemfile

5
推荐指数
2
解决办法
663
查看次数

如何在我的应用程序中使用多个Gemfiles?

我正在与一个开发团队合作,我们都在使用我们的存储库中的相同Gemfile.因为我在Mac上工作,而其他人正在使用Ubuntu,我们在我们的存储库中也有一个Gemfile.local.example文件,它具有适用于每个操作系统的通知宝石,所有这些都被注释掉了.

我没有评论我的操作系统的宝石并保存为新文件,而不是版本控制Gemfile.local.现在我想"捆绑安装"从两个文件安装gem.

我找不到任何关于这样做的好文档.

ruby ruby-on-rails bundler gemfile

5
推荐指数
2
解决办法
2409
查看次数

在ruby Gemfile中指定宝石的可选依赖项的正确方法

宝石打算支持宝石ab作为功​​能的替代品。

在代码中,我检查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)当我们退回到测试中时,如何明确要求ab分别模拟(或模拟)场景b

3)还有我怎么指定,要么a或者b是创业板的先决条件。

谢谢

ruby testing rubygems bundler gemfile

5
推荐指数
1
解决办法
1681
查看次数

Rails表示即使在捆绑安装期间列出了json 1.8.1,它仍然缺失

我做了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-on-rails bundler gemfile ruby-on-rails-4

5
推荐指数
1
解决办法
4929
查看次数

从Rails 3.2.22升级到Rails 4.2.4时出错

我正在尝试使用Ruby 2.2.3将我们的应用程序从Rails 3.2.22升级到Rails 4.2.4.

这是我到目前为止所做的:

  1. 修改了Gemfile来指定 rails, "~> 4.2.4"
  2. bundle
  3. bundle 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)

ruby ruby-on-rails bundler gemfile ruby-on-rails-4

5
推荐指数
1
解决办法
456
查看次数

如何在我的Rails项目中检查其版本的所有宝石?

当我gem list从我的app文件夹中使用时,终端显示我本地计算机上安装的所有gem的列表.我想改为看项目相关的宝石.

gem ruby-on-rails ruby-on-rails-3 gemfile ruby-on-rails-4

5
推荐指数
1
解决办法
2730
查看次数

How to specify source in .gemspec file?

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的来源?

ruby rubygems gemspecs gemfile

5
推荐指数
1
解决办法
2370
查看次数

为什么Gem在RubyGems中提供〜> AND =>?

bcrypt的宝石在https://rubygems.org/gems/bcrypt/versions/3.1.11

显示了这种用法

gem 'bcrypt', '~> 3.1', '>= 3.1.11'
Run Code Online (Sandbox Code Playgroud)

为什么有两个版本的精子悲观操作符?

我们通常只使用一个版本用于其他宝石

ruby rubygems ruby-on-rails gemfile

5
推荐指数
1
解决办法
57
查看次数

是否可以覆盖gemfile进行本地开发?

我们Gemfile的git储存库中目前有一个。但是,有一个gem我只能在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将其添加到我们的中Gemfile,但是每次我检出到master / dev main分支时,由于与跟踪的gemfile冲突,都必须将其删除。

我想要的是类似a的东西Gemfile.local,它将继承从导入的宝石,Gemfile但也允许将新的宝石导入那里以仅在我的机器上使用。该文件将在中被忽略.gitignore。这有可能吗?

ruby rubygems gemfile

5
推荐指数
1
解决办法
418
查看次数

Gem not loading:NameError(未初始化的常量)| 但宝石在当地的道路上工作

我有一台新机器并且安装了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)

ruby rubygems ruby-on-rails gemfile rbenv

5
推荐指数
1
解决办法
911
查看次数