Проблемы с запуском сервера Rails - PullRequest
0 голосов
/ 02 июня 2011

Когда я запускаю 'rails server', я получаю следующую ошибку:

Could not find gem 'sqlite3 (>= 0, runtime)' in any of the gem sources listed in your Gemfile.

Мой GemFile выглядит так: gem 'sqlite3'

Также, когда я запускаю команду порта, он говорит, что этоне распознает эту команду:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ port install sqlite3 +universal
-bash: port: command not found

Есть предложения?

ОБНОВЛЕНИЕ 1:

Я запускаю sudo gem install sqlite3 и получаю следующее сообщение:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ sudo gem install sqlite3
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3:
    ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite3-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

ОБНОВЛЕНИЕ 2 : (Содержимое GemFile)

source 'http://rubygems.org'

gem 'rails', '3.0.7'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
# gem 'ruby-debug'
# gem 'ruby-debug19', :require => 'ruby-debug'

# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'

# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
#   gem 'webrat'
# end

ОБНОВЛЕНИЕ 3:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ port search sqlite3 -bash: port: command not found

ОБНОВЛЕНИЕ 4:

После загрузки установки Macports я снова запустил установку пакета, и вот результат:

Installing sqlite3 (1.3.3) with native extensions /usr/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in build_extensions ': ОШИБКА: не удалось построитьжемчужина родного расширения.(Gem :: Installer :: ExtensionBuildError)

/ usr / local / bin / ruby ​​extconf.rb проверка для sqlite3.h ... да проверка для sqlite3_libversion_number () в -lsqlite3 ... нет sqlite3 отсутствует,Попробуйте 'port install sqlite3 + universal' или 'yum install sqlite3-devel' и проверьте путь поиска в вашей общей библиотеке (место, где находится ваша общая библиотека sqlite3).* extconf.rb не удалось * Не удалось создать Makefile по какой-то причине, возможно, из-за отсутствия необходимых библиотек и / или заголовков.Проверьте файл mkmf.log для более подробной информации.Вам могут потребоваться параметры конфигурации.

`

ОБНОВЛЕНИЕ 5:

, что sqlite3 дает мне следующее:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ which sqlite3
/opt/local/bin/sqlite3

ОБНОВЛЕНИЕ 5:

, который -a sqlite3 дает мне следующее:

Mohammad-Azams-MacBook-Pro:blog azamsharp$ which -a sqlite3
/opt/local/bin/sqlite3
/usr/local/bin/sqlite3
/usr/bin/sqlite3

Ответы [ 6 ]

3 голосов
/ 07 июня 2011

Если у вас возникли проблемы с разговором о /usr/local/bin/ruby extconf.rb checking for sqlite3.h, возможно, это как-то связано с макпортом.

Сначала убедитесь, что у вас установлен xcode. Run:

gcc

и вы должны получить:

i686-apple-darwin10-gcc-4.2.1: no input files

Если вы это сделаете, то давайте установим homebrew

Затем список команд для установки homebrew, обновления rubygems и обновления rails

brew install sqlite
gem update --system
gem install bundler
gem install rails -v=3.0.8

Затем, чтобы проверить, rails -v должен вывести Rails 3.0.7

2 голосов
/ 02 июня 2011

Если вы работаете в версии 10.4 или более ранней, у вас не установлен sqlite 3 (фактический движок БД, а не гем) по умолчанию.У вас есть 3 варианта (при условии, что обновление вашей ОС до 10.5 или 10.6 не является опцией):

  1. Скомпилируйте источник (не так плохо, как кажется) http://www.sqlite.org/download.html
  2. Установите MacPorts(почему команда порта не была найдена) http://www.macports.org/install.php
  3. Не использовать sqlite.Вместо этого используйте mysql или другую базу данных по вашему выбору.

Я рекомендую последнюю, если вы собираетесь развертывать с использованием какой-либо другой базы данных, отличной от sqlite, и развертывание с использованием sqlite обычно не является хорошей идеей.Мне нравится, чтобы мои среды разработки и производства были достаточно единообразными, чтобы избежать ошибок и тому подобного.

Надеюсь, это поможет.

1 голос
/ 02 июня 2011

Я подытоживаю в ответ. Итак:

1) Установите macports: http://www.macports.org/install.php - он имеет установщик dmg, займет 2 минуты.

2) После того, как вы установили его, выполните «пакетную установку», и sqlite3 будет установлен, как указано в вашем Gemfile.

0 голосов
/ 07 июня 2011

Из вашего каталога Rails:

cd ..
cd rails-root
ruby -v
gem list sqlite3
bundle install
gem list sqlite3
bundle exec rails server

Может случиться так, что вы упаковываете приложение Rails с файлом .rvmrc. Я видел случаи, когда вы связываете версию Ruby, которая не соответствует файлу .rvmrc, или какое-либо другое несоответствие, поэтому, когда вы связываете sqlite3, он не соответствует той версии Ruby, которую использует rails при запуске приложения. .

Изменение из каталога и обратно в него, и запуск сервера rails с префиксом bundle exec - мои два предложения.

0 голосов
/ 07 июня 2011

Когда вы используете порт, ищите пакет с именем sqlite3-dev или что-то подобное. Часть -dev является ключевой. Я не использую MacPorts, но при установке Ubuntu это необходимый пакет.

Если вы хотите установить пакет, с которым планируете связать, всегда ищите версию -dev. Параметр -dev означает, что он устанавливает заголовочные файлы, помимо прочего, необходимые для разработки с использованием этого пакета.

Скорее всего, ваш гем не может создать собственное расширение sqlite3, потому что ищет заголовочные файлы, если это не решит вашу проблему, пожалуйста, опубликуйте файл журнала для установки гема.

0 голосов
/ 02 июня 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...