Ruby on Rails - "Добавить" gem sqlite3 "в ваш Gemfile"
Я полный n00b на Rails, но только новичок в Ruby. Я планирую изучить Ruby еще до того, как я действительно изучу Rails, но я слишком любопытен для себя.
Во всяком случае, я следил за учебником, но я застрял, когда сказал, чтобы набрать "rails server" в каталоге блога. В нем говорится: "Указанный" sqlite3 "для адаптера базы данных, но камень не загружен. Добавьте gem 'sqlite3'
в свой Gemfile". Поэтому я покинул сервер, установил sqlite3, восстановил сервер... только для того, чтобы снова получить это сообщение. sqlite3 не появляется, когда я делаю "список драгоценных камней", но я вижу папку в моем каталоге Root Ruby.
Если это помогает, я получил Ruby 2.0, Rails 4.0, sqlite3 1.3.7
Я прошу прощения, если на это был дан ответ уже где-то в другом месте, но я не смог найти ничего в обширной базе данных, которая представляет собой stackoverflow. Я был бы признателен за любое терпение, которое вы готовы предоставить.
Большое спасибо!
hewhocomes
Ответы
Ответ 1
Проблема решена!
Оказывается, это было несколько разных проблем:
-
Ранее я забыл, что для запуска должен быть установлен sqlite3, как указано в руководстве rubyonrails.org Getting Started. Руководство дало мне ссылку на sqlite.com, из которой мне нужно было загрузить командную оболочку и DLL, оба находятся в разделе "Предварительно скомпилированные двоичные файлы для Windows". Подробнее об этом ниже.
-
Установка gem дала мне ошибку, которая заявила, что не может загрузить что-либо из rubygems.org. Оказывается, появилась новая версия рубигемов, о которых я не знал. Исправлено с помощью gem update -system.
-
Я попробовал gem install sqlite3 --platform = ruby, но безрезультатно. Он не смог построить собственное расширение и не смог найти sqlite3.h.
-
Я задал свой вопрос и на рубиновых форумах.
http://www.ruby-forum.com/topic/4415126
Здесь Joel Pearson (virtuoso) предоставил недостающие файлы, которые мне нужны с помощью вложения, поскольку эти файлы не представлены в sqlite.com. Я следовал его инструкциям, включая размещение файлов оболочки и dll в моем корневом каталоге Ruby bin... и это сработало!
В принципе, я смог установить sqlite3 без изменения Gemfile или Gemfile.lock. В моем списке драгоценных камней отображается sqlite3 (1.3.7), и теперь появляется экран приветствия Rails, как показано в руководстве Getting Started!
Я использую бит Windows 7-64, Ruby 2.0, Rails 4.0, и теперь я получил sqlite3 1.3.7.
Большое спасибо всем за то, что вы дали совет и руководство n00b. Я обнаружил, что, изучив Gemfiles, а также свой корневой каталог Ruby, я понимаю, как Ruby и Rails лучше вписываются в мой компьютер.
Как новичок, я бы рекомендовал загрузить файлы и папки sqlite3, необходимые для установки в Windows, как в руководстве rubyonrails.org Getting Started, так и в sqlite.com.
Еще раз спасибо!
hewhocomes
Ответ 2
У меня возникла эта ошибка с той же версией Ruby/Rails/SQLite, которую вы указали в своем вопросе, даже после подтверждения того, что мой gemfile имеет gem 'sqlite3'
. Я не знаю, какая у вас ОС (поэтому, вероятно, вы были недооценены), но я использую Windows 7 x64.
Чтобы получить камень, который будет установлен в моем приложении Rails, мне нужно было отредактировать файл Gemfile.lock, чтобы заменить sqlite3 (1.3.7-x86-mingw32)
на sqlite3 (1.3.7)
Затем, после запуска установки пакета, я, наконец, вижу на выходе
Using sqlite3 (1.3.7)
При запуске сервера rails я (наконец) вижу страницу "Добро пожаловать на борт".
Ответ 3
У меня была бы такая же проблема при победе x64 7.
Решение (для меня):
1) Установите sqlite3
gem install sqlite3
2) Проверьте установленную версию
список драгоценных камней sqlite3
Это дает мне: sqlite3 (1.3.8 x64-mingw32)
3) Измените файл Gemfile.lock
Я меняю "sqlite3 (1.3.8-x86-mingw32)" на "sqlite3 (1.3.8-x64-mingw32)
Это работает:) Обратите внимание, что вам нужно добавить "-" между номером версии и x64 в Gemfile.lock
Xmass
Ответ 4
В моем случае это ошибка "Specified 'sqlite3' for database adapter, but the gem is not loaded. Add gem 'sqlite3' to your Gemfile."
сообщение появилось, когда я запустил rails server
сразу после того, как сгенерировал свежее приложение rails. Это было с Rails версии 4.1.16 (Ruby версии 2.3.1)
gem 'sqlite3', '~> 1.3.0'
Эта строка в Gemfile удаляет сообщение об ошибке. Я думаю, что новый sqlite gem (версия 1.4) конфликтует со старыми rails (версия 4.1), но я не видел связанных с ними проблем в их хранилище Github. Я добавляю этот ответ сюда, потому что он может помочь любому, кто испытывает ту же ситуацию, в которой я нахожусь.
Ответ 5
- Не создавайте другую глобальную базу данных, а затем создавайте sqlite3 для среды в вашем файле gem.
- Используйте предыдущий камень.
- Убедитесь, что вы запустили
bundle install
, затем bundle update
и, наконец, bundle install
.
В вашем Gemfile
могут быть такие записи:
group :development, :production do
gem 'pg', '0.15.1'
end
group :test do
gem 'sqlite3', '1.3.6'
end
Ответ 6
Для меня это помогло поставить версию после gem 'sqlite3'
в gemfile, поэтому она стала gem 'sqlite3', '1.3.7'
.
Раньше я пытался скомпилировать sqlite3, обновленный gem и т.д. Rails не смог "принять" его до сих пор, поэтому окончательное определение версии помогло.
Ответ 7
у меня работает sudo apt-get установить libsqlite3-dev
Ответ 8
Запустите команды в следующем порядке
sudo apt-get install libsqlite3-dev
sudo gem install sqlite3-ruby
gem list
После этой команды вы увидите следующие версии sqlite
sqlite3 (1.3.12)
sqlite3-ruby (1.3.3)
Ответ 9
Еще одно потенциальное решение найдено в этом посте
У меня уже был установлен sqlite, но, по-видимому, с 4 февраля 2019 года возникла проблема с гемом sqlite3 v1.4.0.
Тем временем вы можете вернуться к v1.3.6, добавив эту версию в строку "sqlite3" в вашем Gemfile, например:
gem 'sqlite3', '~> 1.3.6'
Надеюсь, это сэкономит кому-то время!
Ответ 10
Просто добавьте эту строку в свой Gemfile, который находится в корневой папке вашего приложения
gem 'sqlite3'
Ответ 11
Одна маленькая, но важная сторона для всех, кто сталкивается с этой ошибкой. До версии 1.4 Bundler не мог понять 64-битные драгоценности в Windows (https://github.com/bundler/bundler/issues/2658), что объясняет, почему 32-разрядные версии показывались в Gemfile. замок.
Вручную:
"sqlite3 (1.3.8-x86-mingw32" to "sqlite3 (1.3.8-x64-mingw32)"
работает, если вы используете более старую версию bundler. Bundler должен иметь возможность автоматически вычислять вещи сейчас, если вы обновляете (в настоящее время работает 1.5.2 для меня).