I want to add code coverage to my project and sign up coveralls.io and create Gemfile with:
gem 'coveralls', require: false
but how can I install the gem from Gemfile?
run the command bundle install in your shell, once you have your Gemfile created.
This command will look your Gemfile and install the relevant Gems on the indicated versions.
The Gemfiles are installed because in your Gemfile you are pointing out the source where the gems can be downloaded from.
Your can create a Gemfile just by typing bundle init in your shell
I add a Gemfile example for your reference:
source "https://rubygems.org" # where gems will be downloaded from
ruby "2.2.3" # ruby version, change for the one you use
gem "sinatra"
gem "sinatra-flash"
gem "sinatra-partial"
gem "bcrypt"
gem "dm-validations"
gem "dm-transactions"
gem "data_mapper"
gem "dm-postgres-adapter"
gem "pg"
gem "database_cleaner"
group :test do # you can make groups for test, development, production..
gem "rspec"
gem "capybara"
gem "rspec-sinatra"
gem "cucumber"
gem "coveralls", require: false
end
First install bundler if you don't have it
gem install bundler or sudo gem install bundler if you don't have the required permissions. Bundler is a gem that manages gem dependencies.
then you can follow the above instruction for creating the gemfile, after which you can issue the command
bundle install
Related
When trying to run bundle install on i receive the following exception:
$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/..
Could not find gem 'minitest/autorun x64-mingw32' in any of the gem sources
listed in your Gemfile.
I was originally trying to run bundle exec rake, which suggests the same issue with gem 'minitest/autorun x64-mingw32'. Running them with rake test works fine; hence, I think I've done something wrong with bundler related to my OS (windows 7 x64). The install works properly without this package. I also tried using unit/test with the same result.
Ruby version is 2.4.4.
Gemfile:
source "https://rubygems.org"
gemspec
gem 'json', '~> 2.1.0', '>= 2.0.4'
gem 'addressable', '~> 2.5.2', '>= 2.5.2'
gem 'mongo', '~> 2.5.1', '>= 2.5.1'
group :test do
gem 'rake'
gem 'minitest/autorun'
end
Do I need to specify the platform or some other variable so that bundle looks for the right version of the gem on rubygems?
Any help would be much appreciated.
I wrote a ruby gem that requires another gem -> 'curl'.
How can i make it happen that 'curl' my required gem is getting installed along with my own when i run:
gem install MyGem-1.0.0.gem
The RubyGems specifications (the .gemspec file) allows you to list a gem as a dependency of your gem. This will cause RubyGems to install the dependency (in your case curl) automatically when your gem is installed.
Gem::Specification.new do |spec|
# ...
spec.add_runtime_dependency 'curl', '~> 1.1'
end
If you aren't using bundler, you just need to add 'curl' gem as a runtime dependency in your gemspec file.
spec.add_runtime_dependency 'example', '~> 1.1', '>= 1.1.4'
Detailed reference: http://guides.rubygems.org/specification-reference/#add_runtime_dependency
Here is good guide for creating gem with bundler
I am using rvm, ruby 2.0.0 and bundler.
My Gemfile looks like this:
source 'https://rubygems.org'
gem 'logger'
gem 'mygem', :path => '.'
bundle installs both of them gems. bundle show shows logger is installed in ~/.rvm/gems/ruby-2.0.0-p247/gems, but mygem is installed in the path where the gem is located.
Is there any way to get bundle to install the local gem into rvm's gems directory?
No, Bundler treats path gems differently and does not install them to your GEM_PATH. This is so that you don't need to reinstall as you make changes.
It is not normal or necessary for a gem to point to itself or its runtime dependencies in its Gemfile. You might want to add gemspec to do this automatically. See http://bundler.io/v1.3/rubygems.html
I'm using ruby 1.9.3p194 and bundler 1.1.4
In my Gemfile I have this:
group :production do
gem 'thin', '1.4.1'
end
When I run $ rails s, bundler keeps complains:
Could not find gem 'thin (>= 1.4.1) ruby' in the gems available on this machine.
Run `bundle install` to install missing gems.
I'm running under development environment, so shouldn't it NOT care if it is installed or not? Dose bundler force you to install ALL the gems when running $ rails s?
I also tried the group:test, same thing happens. That doesn't really make sense to me, can anyone help?
my gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'mysql2'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
group :production do
gem 'thin', '1.4.1'
end
gem 'devise', '2.1.2'
gem 'cancan', '1.6.8'
gem 'will_paginate', '3.0.3'
Possibly the problem is that you are running rails s, while you need to run bundle exec rails s. If you precede a command with bundle exec, it is executed within the context of the bundle. All the gems available to bundler are then available to the command.
By default, gems from bundles are installed in the global gem directory. This can produce confusing results when you don't prepend bundle exec to a command: imagine you have both rails 3.1 and rails 3.2 in your global gems and your Gemfile mentions 3.1. Then you will still call the executable from rails 3.2 when you simply say rails on the command line.
Now of course thin could only be missing if it wasn't installed with the global gems. Assuming you've used the --path option to bundler at least once, your gems have been installed to the path specified there and not to the global repository. After using --path, you must specify bundle exec, otherwise gems simply won't be found at all.
I am getting this error when I run "bundle install"
Could not find gem 'febeling-rubyzip (>= 0, runtime)' in any of the gem sources listed in your Gemfile.
My Gemfile looks like this
source 'http://rubygems.org'
gem 'rails'
gem "authlogic", :git => "git://github.com/binarylogic/authlogic.git"
gem "mechanize"
gem "hpricot"
gem "sqlite3-ruby"
gem "daemons"
gem 'sqlite3-ruby', :require => 'sqlite3'
gem "nokogiri"
gem "roo"
gem "zip"
gem "spreadsheet"
gem "builder"
gem "gimite-google-spreadsheet-ruby"
gem "febeling-rubyzip"
#gem "savon", "=0.7.9"
gem "savon"
#devise is required for rails_admin, but not used
gem 'devise'
gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git'
gem 'febeling-rubyzip'
group :development, :test do
gem "rcov"
gem "capistrano"
end
group :development do
gem "ruby-debug"
gem "httpclient"
end
Any thoughts/tips would be greatly appreciarted.
Thanks, Chris
PS I am using rvm with per project gemsets. Whats probably quite pertinent is that I just did a "rvm gemset empty" and remove Gemfile.lock to do a clean install of the project's gems - things seemed ok prior to that :(
Replace 'febeling-rubyzip' with 'rubyzip'. The new way of naming the gems has changed and it does not have the creator's username (github username) attached to it.
Does gem query -r -n febeling-rubyzip find anything in your version of ruby/gems?