Reputation: 194
I am new to ruby on rails and getting errors when trying to generate models. I wrote this command on terminal :
rails generate model Book
and I got this error:
/var/lib/gems/2.3.0/gems/ffi-1.9.14/lib/ffi.rb:6:in `require': incompatible library version - /var/lib/gems/2.3.0/gems/ffi-1.9.14/lib/ffi_c.so (LoadError)
from /var/lib/gems/2.3.0/gems/ffi-1.9.14/lib/ffi.rb:6:in `rescue in <top (required)>'
from /var/lib/gems/2.3.0/gems/ffi-1.9.14/lib/ffi.rb:3:in `<top (required)>'
from /var/lib/gems/2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify/native.rb:1:in `require'
from /var/lib/gems/2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify/native.rb:1:in `<top (required)>'
from /var/lib/gems/2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify.rb:1:in `require'
from /var/lib/gems/2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify.rb:1:in `<top (required)>'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/adapter/linux.rb:30:in `require'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/adapter/linux.rb:30:in `_configure'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/adapter/base.rb:45:in `block in configure'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/adapter/base.rb:40:in `each'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/adapter/base.rb:40:in `configure'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/adapter/base.rb:63:in `start'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/backend.rb:28:in `start'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/listener.rb:67:in `block in <class:Listener>'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/fsm.rb:120:in `instance_eval'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/fsm.rb:120:in `call'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/fsm.rb:91:in `transition_with_callbacks!'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/fsm.rb:57:in `transition'
from /var/lib/gems/2.3.0/gems/listen-3.0.8/lib/listen/listener.rb:90:in `start'
from /var/lib/gems/2.3.0/gems/spring-watcher-listen-2.0.0/lib/spring/watcher/listen.rb:27:in `start'
from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:70:in `start_watcher'
from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:79:in `preload'
from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:143:in `serve'
from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:131:in `block in run'
from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:125:in `loop'
from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:125:in `run'
from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/application/boot.rb:19:in `<top (required)>'
from /home/pearlstud/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/pearlstud/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'
I tried adding "therubyracer" in my gemfile and then running,
bundle install
but even this doesn't help.
My rails version is "Rails 5.0.0.1".
The content of the Gemfile is as follows:
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
gem 'therubyracer'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platform: :mri
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console'
gem 'listen', '~> 3.0.5'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
The contents of Gemfile.lock is as follows:
remote: https://rubygems.org/
specs:
actioncable (5.0.0.1)
actionpack (= 5.0.0.1)
nio4r (~> 1.2)
websocket-driver (~> 0.6.1)
actionmailer (5.0.0.1)
actionpack (= 5.0.0.1)
actionview (= 5.0.0.1)
activejob (= 5.0.0.1)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.0.0.1)
actionview (= 5.0.0.1)
activesupport (= 5.0.0.1)
rack (~> 2.0)
rack-test (~> 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.0.0.1)
activesupport (= 5.0.0.1)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
activejob (5.0.0.1)
activesupport (= 5.0.0.1)
globalid (>= 0.3.6)
activemodel (5.0.0.1)
activesupport (= 5.0.0.1)
activerecord (5.0.0.1)
activemodel (= 5.0.0.1)
activesupport (= 5.0.0.1)
arel (~> 7.0)
activesupport (5.0.0.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
arel (7.1.1)
builder (3.2.2)
byebug (9.0.5)
coffee-rails (4.2.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.2.x)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.10.0)
concurrent-ruby (1.0.2)
debug_inspector (0.0.2)
erubis (2.7.0)
execjs (2.7.0)
ffi (1.9.14)
globalid (0.3.7)
activesupport (>= 4.1.0)
i18n (0.7.0)
jbuilder (2.6.0)
activesupport (>= 3.0.0, < 5.1)
multi_json (~> 1.2)
jquery-rails (4.2.1)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
libv8 (3.16.14.15)
listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
loofah (2.0.3)
nokogiri (>= 1.5.9)
mail (2.6.4)
mime-types (>= 1.16, < 4)
method_source (0.8.2)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mini_portile2 (2.1.0)
minitest (5.9.0)
multi_json (1.12.1)
nio4r (1.2.1)
nokogiri (1.6.8)
mini_portile2 (~> 2.1.0)
pkg-config (~> 1.1.7)
pkg-config (1.1.7)
puma (3.6.0)
rack (2.0.1)
rack-test (0.6.3)
rack (>= 1.0)
rails (5.0.0.1)
actioncable (= 5.0.0.1)
actionmailer (= 5.0.0.1)
actionpack (= 5.0.0.1)
actionview (= 5.0.0.1)
activejob (= 5.0.0.1)
activemodel (= 5.0.0.1)
activerecord (= 5.0.0.1)
activesupport (= 5.0.0.1)
bundler (>= 1.3.0, < 2.0)
railties (= 5.0.0.1)
sprockets-rails (>= 2.0.0)
rails-dom-testing (2.0.1)
activesupport (>= 4.2.0, < 6.0)
nokogiri (~> 1.6.0)
rails-html-sanitizer (1.0.3)
loofah (~> 2.0)
railties (5.0.0.1)
actionpack (= 5.0.0.1)
activesupport (= 5.0.0.1)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (11.2.2)
rb-fsevent (0.9.7)
rb-inotify (0.9.7)
ffi (>= 0.5.0)
ref (2.0.0)
sass (3.4.22)
sass-rails (5.0.6)
railties (>= 4.0.0, < 6)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3)
spring (1.7.2)
spring-watcher-listen (2.0.0)
listen (>= 2.7, < 4.0)
spring (~> 1.2)
sprockets (3.7.0)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.0)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
sqlite3 (1.3.11)
therubyracer (0.12.2)
libv8 (~> 3.16.14.0)
ref
thor (0.19.1)
thread_safe (0.3.5)
tilt (2.0.5)
turbolinks (5.0.1)
turbolinks-source (~> 5)
turbolinks-source (5.0.0)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (3.0.2)
execjs (>= 0.3.0, < 3)
web-console (3.3.1)
actionview (>= 5.0)
activemodel (>= 5.0)
debug_inspector
railties (>= 5.0)
websocket-driver (0.6.4)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.2)
PLATFORMS
ruby
DEPENDENCIES
byebug
coffee-rails (~> 4.2)
jbuilder (~> 2.5)
jquery-rails
listen (~> 3.0.5)
puma (~> 3.0)
rails (~> 5.0.0, >= 5.0.0.1)
sass-rails (~> 5.0)
spring
spring-watcher-listen (~> 2.0.0)
sqlite3
therubyracer
turbolinks (~> 5)
tzinfo-data
uglifier (>= 1.3.0)
web-console
BUNDLED WITH
1.12.5
Upvotes: 2
Views: 5689
Reputation: 425
I've been getting this a lot with recent versions of Bundler and Ruby. For reasons, they have been using ~/.bundle
and ~/.gems
for gems, and so different Ruby versions end up trying to load the same compiled versions.
I just had this very problem, and in my case the path it was loading the gem was pointing to ffi in ~/.bundle
. I tried to gem install ffi
and it worked, but it was installed somewhere else, so despite having the ffi
gem in ~/.gem
, bundler continued trying to load the broken on living in ~/.bundle
.
My solution was to delete the one in ~/.bundle
so bundler could reinstall it:
rm -rf ~/.bundle
It's far from ideal, because it means the conflicts will eventually return, but it solves the problem at hand in the short-term. I'm still investigating how to separate gems per Ruby version, which isn't happening automatically for some reason.
Upvotes: 0
Reputation: 1398
I had the same issue with gem "date", reinstalling it worked for me, try this:
gem uninstall ffi
gem install ffi
Upvotes: 0
Reputation: 1643
Both my problem and its solution were simple: I'd failed to implement a .ruby-gemset and a .ruby-version in the project directory. (Which is to say I did a long time ago... but apparently these files weren't backed up with my project an were not carried over.)
Adding these files solved the problem instantly:
.ruby-gemset
rails5
.ruby-version
ruby-2.6.2 (or whatever your version is)
It took nothing more than that. I run rvm. Mind you your rails version and ruby version are likely different... but you can find your gemsets in their directory. It will be EXTREMELY obvious which you you need.
You can find your Ruby version with:
ruby --version
This won't help everyone I know. But I'm hoping it helps SOMEONE. (At least rvm users)
Upvotes: 0
Reputation: 194
I had two versions of gem installed in different paths:
/var/lib/gems
and
~/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems
so I removed the gems package corresponding to "/var/lib/gems" and reinstalled rails using rbenv and the problem was solved
Upvotes: 1
Reputation: 1590
This error is probably caused by an older version of the library installed in the system.
First install ffi
with gem
command:
gem install ffi
and then do
bundle update
Upvotes: 3