Не удается найти sqlite3 в этой версии ruby ​​/ rails, используя rvm

602
Michael

Я установил rvm и использую 1.9.2 с рельсами 3.05. Мне удалось создать новое приложение, но как только я перешел в каталог и попытался запустить сервер ("rails s"), я получил это сообщение об ошибке

Could not find gem 'sqlite3 (>= 0)' in any of the gem sources listed in your Gemfile. Run `bundle install` to install missing gems. 

Я выполнил «пакетную установку» согласно инструкции, и она сделала несколько загрузок, а затем, похоже, столкнулась с еще некоторыми проблемами. Увидеть ниже. Обратите внимание, что когда я использую ruby ​​/ rails по умолчанию на моем Mac OS, я могу запустить сервер. Это только проблема у меня, когда я использую версию, созданную в rvm?

Fetching source index for http://rubygems.org/ Using rake (0.9.2)  Using abstract (1.0.0)  Using activesupport (3.0.5)  Using builder (2.1.2)  Using i18n (0.6.0)  Using activemodel (3.0.5)  Using erubis (2.6.6)  Using rack (1.2.4)  Using rack-mount (0.6.14)  Using rack-test (0.5.7)  Using tzinfo (0.3.29)  Using actionpack (3.0.5)  Using mime-types (1.16)  Using polyglot (0.3.2)  Using treetop (1.4.10)  Using mail (2.2.19)  Using actionmailer (3.0.5)  Using arel (2.0.10)  Using activerecord (3.0.5)  Using activeresource (3.0.5)  Using bundler (1.0.18)  Using thor (0.14.6)  Using railties (3.0.5)  Using rails (3.0.5)  /Users/michaeljohnmitchell/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_input.rb:122:in `initialize': no metadata found in /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/cache/sqlite3-1.3.4.gem (Gem::Package::FormatError) from /Users/michaeljohnmitchell/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_input.rb:20:in `new' from /Users/michaeljohnmitchell/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/package/tar_input.rb:20:in `open' from /Users/michaeljohnmitchell/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/package.rb:44:in `open' from /Users/michaeljohnmitchell/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/format.rb:62:in `from_io' from /Users/michaeljohnmitchell/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/format.rb:46:in `block in from_file_by_path' from /Users/michaeljohnmitchell/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/open-uri.rb:35:in `open' from /Users/michaeljohnmitchell/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/open-uri.rb:35:in `open' from /Users/michaeljohnmitchell/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/format.rb:45:in `from_file_by_path' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/rubygems_integration.rb:100:in `spec_from_gem' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/source.rb:77:in `fetch' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/installer.rb:50:in `block in run' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/installer.rb:49:in `run' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/installer.rb:8:in `install' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/cli.rb:220:in `install' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/vendor/thor/task.rb:22:in `run' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/vendor/thor.rb:263:in `dispatch' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/vendor/thor/base.rb:386:in `start' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/bin/bundle:13:in `<top (required)>' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/bin/bundle:19:in `load' from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290/bin/bundle:19:in `<main>' Michael-Mitchells-MacBook-Pro:demo michaeljohnmitchell$ rails s 
2

1 ответ на вопрос

2
Andrew Vit

Когда разные версии гемов устанавливаются с помощью компоновщика или напрямую с помощью rubygems, также устанавливаются исполняемые скрипты (такие как rails, rake и, как ни странно, bundle ). Запуск правильных версий этих сценариев при работе с разными пакетами был бы невозможен, поэтому решение, которое разработал упаковщик, состоит в том, чтобы префиксировать ваши команды bundle exec, что приведет к их запуску в контексте вашего комплекта и запуску правильной версии. из вашего Gemfile:

bundle exec rails s 

Другой вариант - указать, что bundler устанавливает эти сценарии в каталог, чтобы вы могли вызывать их оттуда:

bundle install --binstubs # same as: bundle install --binstubs=./bin 

Я думаю bundle exec, что более безопасным вариантом является использование, которое вы можете сократить, используя псевдоним оболочки, поскольку он может раздражать при наборе текста каждый раз.

Правильно. Я только что столкнулся с этим вчера. Похоже на недавнее изменение в Bundler и Rails? slhck 12 лет назад 0

Похожие вопросы