Updating Gemfile.lock fails - ruby

I've updated a gem version in my Gemfile, so I'm trying to update Gemfile.lock. I run:
$ bundle update
Fetching gem metadata from https://rubygems.org/......
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies.......
Fetching rake 10.5.0
Fetching i18n 0.8.1
Fetching minitest 5.7.0
Fetching thread_safe 0.3.6
....
And get the following error despite it seems to be fetched already (see output above):
Bundler::GemspecError: Could not read gem at /usr/lib/ruby/gems/2.4.0/cache/rake-10.5.0.gem. It may be corrupted.
An error occurred while installing rake (10.5.0), and Bundler cannot continue.
Make sure that `gem install rake -v '10.5.0'` succeeds before bundling.
There's no such file under /usr/lib/ruby/gems/2.4.0/cache/. The cache directory is writable (777).
If I run gem install rake -v '10.5.0' it works fine. But do I really need to install gems manually (error repeats for other packages)? I don't get such errors if just run bundle install without updating gems.

Turned out that setting write permissions on cache directory (/usr/lib/ruby/gems/2.4.0/cache/) is not enough. You have to set write permissions for the parent directory (/usr/lib/ruby/gems/2.4.0/). For some reason, bundle update doesn't write to cache unless you do that even though it doesn't write anything to any other directories on the same level as cache.

Related

jekyll build error unknown encoding name "chunked\r\n\r\n25"

I am trying something simple. Using Jekyll with Bundler. The first thing to do is create a new directory for your project and runĀ  bundle init. This creates a new Bundler project (by creating an empty Gemfile).
mkdir my-jekyll-website
cd my-jekyll-website
bundle init
bundle config set --local path 'vendor/bundle'
bundle add jekyll
The last command gives me an issue.
C:\Users\***\Documents\LEARNING\web stuff\Jekyll\my-jekyll-website>bundle add jekyll
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Fetching public_suffix 4.0.6
Installing public_suffix 4.0.6
Fetching addressable 2.7.0
Installing addressable 2.7.0
Using bundler 2.1.4
Fetching colorator 1.1.0
Installing colorator 1.1.0
Fetching concurrent-ruby 1.1.7
Installing concurrent-ruby 1.1.7
Fetching eventmachine 1.2.7 (x64-mingw32)
Installing eventmachine 1.2.7 (x64-mingw32)
Fetching http_parser.rb 0.6.0
Installing http_parser.rb 0.6.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: C:/Users/****/Documents/LEARNING/web
stuff/Jekyll/my-jekyll-website/vendor/bundle/ruby/2.6.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser
C:/Ruby26-x64/bin/ruby.exe -I C:/Ruby26-x64/lib/ruby/2.6.0 -r
./siteconf20200925-7100-x9bvnr.rb extconf.rb
creating Makefile
current directory: C:/Users/***/Documents/LEARNING/web
stuff/Jekyll/my-jekyll-website/vendor/bundle/ruby/2.6.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser
make "DESTDIR=" clean
current directory: C:/Users/***/Documents/LEARNING/web
stuff/Jekyll/my-jekyll-website/vendor/bundle/ruby/2.6.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser
make "DESTDIR="
generating ruby_http_parser-x64-mingw32.def
compiling ruby_http_parser.c
x86_64-w64-mingw32-gcc.exe: error:
stuff/Jekyll/my-jekyll-website/vendor/bundle/ruby/2.6.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser:
No such file or directory
make: *** [Makefile:244: ruby_http_parser.o] Error 1
make failed, exit code 2
Gem files will remain installed in C:/Users/***/Documents/LEARNING/web
stuff/Jekyll/my-jekyll-website/vendor/bundle/ruby/2.6.0/gems/http_parser.rb-0.6.0
for inspection.
Results logged to C:/Users/***/Documents/LEARNING/web
stuff/Jekyll/my-jekyll-website/vendor/bundle/ruby/2.6.0/extensions/x64-mingw32/2.6.0/http_parser.rb-0.6.0/gem_make.out
An error occurred while installing http_parser.rb (0.6.0), and Bundler cannot
continue.
Make sure that `gem install http_parser.rb -v '0.6.0' --source
'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
jekyll was resolved to 4.1.1, which depends on
em-websocket was resolved to 0.5.2, which depends on
http_parser.rb
What am I missing? Why is this happening?
When I run,
gem install http_parser.rb -v '0.6.0' --source 'https://rubygems.org/'
I get the following output,
http://rubygems.org' Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions. This could take a while...
Successfully installed http_parser.rb-0.6.0
Parsing documentation for http_parser.rb-0.6.0 unknown encoding name "chunked\r\n\r\n25" for ext/ruby_http_parser/vendor/http-parser-java/tools/parse_tests.rb,
skipping
Done installing documentation for http_parser.rb after 1 seconds
1 gem installed
Any pointers that will help me out of this?
I am running this on a Windows 10 laptop.
The code editor is VS Code and the Jekyll version is 4.1.1.
I just had the same problem on windows 10. In my case, the issue seemed to be caused by my Windows path including a folder with a space in its name and I see that you were in the same position ("web stuff"). Note the wording of the error - it only includes the section of the path following the space. In my case, moving the installation to a different folder without a space in the name fixed the problem.
compiling ruby_http_parser.c
x86_64-w64-mingw32-gcc.exe: error:
stuff/Jekyll/my-jekyll-website/vendor/bundle/ruby/2.6.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser:
No such file or directory
make: *** [Makefile:244: ruby_http_parser.o] Error 1
make failed, exit code 2
I guess that the compilation stage has failed to quote the name of the file to compile. I'm not a Ruby or Jekyll developer and don't know where to log that issue.

Bundler could not find compatible versions for gem "bundler": In Gemfile:

I'm making GitHub blog page with Jekyll. I've failed like numerous times and just forked new one and followed README on the repository.
It's https://github.com/janczizikow/sleek/blob/master/README.md
and I tried to run inside the directory(master) but this msg keeps coming out.
I tried 'gem install bundler' 'gem cleanup' and similar solutions on the internet but still can't fix it. I get that I need another version which is lower one, then how can I remove the current one and install the version I need?
I've never used Ruby so I'm SO lost. A little advice will mean a lot.
bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Bundler could not find compatible versions for gem "bundler":
In Gemfile:
bundler (~> 1.12) x64-mingw32
Current Bundler version:
bundler (2.0.2)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?
Could not find gem 'bundler (~> 1.12)' in any of the relevant sources:
the local ruby installation
Version 2.0.2 comes from gem install bundler, but the project uses bundler version 1.12.
To fix your issue run
gem install bundler -v 1.12
bundle _1.12_ install
To start Jekyll run jekyll serve or bundle exec jekyll serve.

An error occurred while installing pg (1.0.0), and Bundler cannot continue

I'm trying to deploy Zipsell with heroku. However when I run through the heroku and ruby setup and try to deploy via:
git clone https://github.com/yongfook/zipsell
cd zipsell
./bin/setup
I get the error message:
An error occurred while installing pg (1.0.0), and Bundler cannot continue.
Make sure that gem install pg -v '1.0.0' --source 'https://rubygems.org/' succeeds before bundling.
In Gemfile:
pg
I have run through the setup process now multiple times and reinstalled all but still am not able to deploy. Any idea what is going wrong?
From the repo you posted it seems the error message is very clear. From the Gemfile of the repo you shared it seems you haven't install pg which is the postgresql (You will need to remove sqlite.
The problem is that there are some missing dependencies that you don't have installed and that why the error is thrown. There is the concepts of gems which is packaged code. https://rubygems.org/ via the following website you can find some of the gems you'r missing. There is also the versions which have to be compatible.
What you'll do is search for the missing gems shown in the error message. Check for the correct version if you the gem in your Gemfile but the version is conflicting.
https://github.com/yongfook/zipsell/blob/master/Gemfile
bundle update
install the missing gems
gem install pg
and so on. Or do it straight in the Gemfile.

Rails bundle install doesn't work 'cause json version error

I just wanted to convert from ImageMagick v7 to ImageMagick v6.
while doing that, this error was happened.
bundle install doesn't work correctly.
It seems like json version is something wrong.
How do I fix this error?
Environment below
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin17]
Rails -v (couldn't find gem) (becuase bundle install can't work)
json list / json (default: 1.8.3)
multi_json (1.13.1, 1.11.2, 1.11.0)
Bundler version 1.16.4
Mac Mojave 10.14
when I do bundle install on terminal, then I got this error
Fetching gem metadata from https://rubygems.org/........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies.......
Using rake 12.3.2
Using concurrent-ruby 1.1.4
Using i18n 0.9.5
Fetching json 1.8.6
Installing json 1.8.6 with native extensions
Errno::EPERM: Operation not permitted # chmod_internal -
/Users/***/projects/***/vendor/bundle/ruby/2.3.0/gems/json-1.8.6/tests/test_json.rb
An error occurred while installing json (1.8.6), and Bundler cannot continue.
Make sure that `gem install json -v '1.8.6' --source
'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
rails was resolved to 4.2.6, which depends on
actionmailer was resolved to 4.2.6, which depends on
actionpack was resolved to 4.2.6, which depends on
actionview was resolved to 4.2.6, which depends on
rails-dom-testing was resolved to 1.0.9, which depends on
rails-deprecated_sanitizer was resolved to 1.0.3, which depends on
activesupport was resolved to 4.2.6, which depends on
json
I tried to do like this because error statement says Make sure that
gem install json -v '1.8.6' --source 'https://rubygems.org/' succeeds before bundling
but result shows like this
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted # chmod_internal - /Users/***/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/json-1.8.6/tests/test_json.rb
I can't understand this error statement
Errno::EPERM: Operation not permitted # chmod_internal -
Also, I goggled a lot, then I update commandlinetool follow this
https://howchoo.com/g/m2u0mmuwzda/macos-mojave-fix-invalid-active-developer-path
then, I did this command again,
sudo gem install json -v '1.8.6' --source 'https://rubygems.org/'
then, it's completely succeded like this.
Building native extensions. This could take a while...
Successfully installed json-1.8.6
Parsing documentation for json-1.8.6
Installing ri documentation for json-1.8.6
Done installing documentation for json after 1 seconds
1 gem installed
But, if I do bundle install, still doesn't work: they show same error.
My recommendation is if possible to start fresh. Maybe your rbenv was not installed correctly, try reinstalling it, I suggest using brew install rbenv https://github.com/rbenv/rbenv#homebrew-on-macos
Make sure to add the eval "$(rbenv init -)" to your ~/.bash_profile then open a new terminal.
Navigate to the project directory and install the Ruby version you need: rbenv install 2.3.1
You can make sure you are using that version by issuing rbenv use 2.3.1 and ruby --version.
Now install bundler for that Ruby version, I suggest 1.17.3 for now (the latest before 2.0.1) gem install bundler -v '1.17.3'.
You should be ready to bundle install.
The most common scenario I see for a message Installing ... with native extensions to result in errors is usually due to the lack of binaries, header files and C related code to build that native extension, in your case the issue is due to permissions, hence why I am suggesting some fresh installation.
I second #Danilo Cabello's recommendation to start fresh if you can. I just have a few other trouble-shooting ideas:
The fact that your bundle is installing gems in /vendor/bundle means that at some point, you must have specified the path with bundle install --path vendor/bundle as #mogbee alludes to. That path flag will load files associated with your gems into vendor/bundle instead of your system gem location. You might have done that if you're trying to keep the project's gems separate from any other project, but if not, you will need to update your bundler's gem path.
To do this, first, check for any issues by running bundle doctor. If no issues are found, check your bundle configuration with bundle env. Make sure that your RubyGems Gem Home and Gem Path are routed through .rbenv, so they should match and look like /Users/***/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0. If they don't match, run the rbenv-doctor command below which should make sure your rbenv installation exported the path properly.
If the output of bundle env tells you that you're actually running an older version of bundler (older than 1.16.4), I would definitely update, and would recommend version 1.17.3 as #Danilo Cabello did.
Second, I would run this rbenv-doctor curl command to check the status of your rbenv install: curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash (https://github.com/rbenv/rbenv-installer#rbenv-doctor).
Third, depending on the output of ls -l within your project folder, you may also want to recursively change owner/group for your ~/.rbenv folder to make sure everything is owned by you and not root (https://superuser.com/questions/260925/how-can-i-make-chown-work-recursively/260939#260939)

Can not find jsonapi parser 0.1.1

When I run rails server, 'Could not find jsonapi-parser-0.1.1.beta2' error shows up.
~/ruby_on_rails/test/sampleapp$ rails s
Could not find jsonapi-parser-0.1.1.beta2 in any of the sources
Run `bundle install` to install missing gems.
~/ruby_on_rails/test/sampleapp$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Could not find jsonapi-0.1.1.beta4 in any of the sources
bundle update jsonapi
should fix it
jsonapi beta4 is not available. only beta5, beta 1,beta2 are available. you could find this here
Add this line in your gemfile if not and then run bundle install.
gem 'jsonapi-parser', '~> 0.1.1.beta2'
gem 'jsonapi', '~> 0.1.1.beta5'
This might be due to the method which requires jsonparser which is not included in your rails app.

Resources