Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bundler warning when running "bundle" - Ruby on Rails

I installed ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16] versions using rbenv, and rails with the following version Rails 5.1.4

after creating a new app via rails new my-app

I am getting the followig error when I try to run bundle

The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java. There was an error while trying to write to /Users/my-user/.bundle/cache/compact_index/rubygems.org.443.29b0360b937aa4d161703e6160654e47/versions. It is likely that you need to grant write permissions for that path.```

like image 299
eugenekgn Avatar asked Oct 14 '17 01:10

eugenekgn


People also ask

What is the difference between bundle and bundler?

The executables bundle & bundler have the same functionality and therefore can be used interchangeably. You can see in the bundler/exe directory that the bundler executable just loads the bundle executable. It seems to me that the bundle command is more commonly used than the bundler command.

What is bundler in Ruby on Rails?

In Rails, bundler provides a constant environment for Ruby projects by tracking and installing suitable gems that are needed. It manages an application's dependencies through its entire life, across many machines, systematically and repeatably. To use bundler, you need to install it.


3 Answers

Just remove this line from your Gemfile

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

because you obviously do not run your application on any of these platforms.

Then run bundle install again.

like image 140
spickermann Avatar answered Oct 19 '22 00:10

spickermann


Alternatively you can keep the tzinfo-data gem and just remove the platform part and it should become something like this:

gem 'tzinfo-data', '>= 1.2016.7' # Don't rely on OSX/Linux timezone data

Recently the RoR creator DHH has published Basecamp's most recent application's Gemfile for Hey! and it contains the line above.

Hope that can become useful for others as it was for me.

like image 8
fagiani Avatar answered Oct 19 '22 01:10

fagiani


I had a similar challenge on my Ubuntu 20.04; ruby (2.7.1); rails (6.0.3.3):

The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java.

After running some searches, I found a fix on a git site page:

bundle config disable_platform_warnings true

I realized it wasn't an error but a time-zone dependency warning applicable to running rails application on Windows environment. Adding the disable_platform_warnings option for Bundler helps to silence platform warnings globally for the current machine.

You can read more at https://github.com/tzinfo/tzinfo-data/issues/12

like image 2
Innopalm4christ Avatar answered Oct 19 '22 00:10

Innopalm4christ