2013-11-24 2 views
2

Я начинаю рельсы, следуя этому руководству: http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec-the_first_application который кажется очень приятным.Почему мой сервер rails выдает предупреждение об устаревании, а не соединение с sqlite3?

В начале автор рассказывает о важности версий для драгоценных камней и программного обеспечения, поэтому я сделал все возможное, чтобы использовать одни и те же версии.

Я следил за учебником, и все прошло хорошо, установка была в порядке (из его предложенного источника: http://railsinstaller.org/en) Я загрузил ruby ​​1.9.

После установки я использовал рельсы новый first_app создать мое приложение, изменил Gemfile к этому один:

source 'https://rubygems.org' 
ruby '1.9.3' #In the tutorial is 2.0.0, but changed to match my ruby version, 
      #as specified in the tutorial 
#ruby-gemset=railstutorial_rails_4_0 

gem 'rails', '4.0.1' 

group :development do 
    gem 'sqlite3', '1.3.8' 
end 

gem 'sass-rails', '4.0.1' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.1' 
gem 'jquery-rails', '3.0.4' 
gem 'turbolinks', '1.1.1' 
gem 'jbuilder', '1.0.2' 

group :doc do 
    gem 'sdoc', '0.3.20', require: false 
end 

Когда я запускаю рельсы команды сервера, я получаю следующее сообщение об ошибке:

DEPRECATION WARNING: config.whiny_nils option is deprecated and no longer works. 
(called from block in <top (required)> at D:/rails/first_app/config/environment 
s/development.rb:10) 
config.eager_load is set to nil. Please update your config/environments/*.rb fil 
es accordingly: 

    * development - set it to false 
    * test - set it to false (unless you use a tool that preloads your test enviro 
nment) 
    * production - set it to true 

Но открытие localhost: 3000 отлично работает. При нажатии на «Об охране окружающей вашего приложения» ссылке, генерирует ошибку

ActiveRecord::ConnectionNotEstablished

Rails.root: D:/rails/first_app

я проверил, и мой database.yml использует sqlite3.

Когда я запускаю грабли БД: создать внутри папки моего приложения, я получаю

rake aborted! Specified 'postgresql' for database adapter, but the gem is not loaded. Add gem 'pg' to your Gemfile.

Я думаю, что, возможно, эти три проблемы связаны и источником проблемы является то, что сообщение об ошибке при запуске сервера рельсы. Что я могу сделать, чтобы исправить это, может быть, это рубиновая версия 1.9.3 вместо 2.0.0?

спасибо!

EDIT: On this link, я нашел решение моей проблемы на whiny_nils Deprecation

Rails 4 removed the whiny_nils feature. Read more about it in the ActiveRecord chapter. 

To solve the deprecation warning, simply remove any lines that set config.whiny_nils. Rails 3 added the configuration by default in config/environments/development.rb and config/environments/test.rb by default. 

не знает, почему создание приложения и запустить его с той же версией бы вызвать эту проблему, но нормально. No.1 fixed :)

Edit2: В той же ссылке я исправил проблему config.eager_load, создав этот конфиг в своих файлах конфигурации и установив значение.

Активная запись остается.

EDIT 3: Это мой database.yml файл

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: sqlite3 
    database: db/production.sqlite3 
    pool: 5 
    timeout: 5000 
+0

Если вы собираетесь использовать базу данных postresql (в /config/database.yml), вам нужно добавить postresql gem (gem 'pg') в Gemfile – nishanthan

+0

Нет, я хочу использовать базу данных sqlite3. Я не знаю, почему rake ссылается на postgres :( – JSBach

+0

проверьте файл /config/database.yml, есть ли у адаптера базы данных postgresql – nishanthan

ответ

1

Я предлагаю решение, которое я считаю, будет работать лучше для вас:

Удалить номера версий от всех других драгоценных камней, чем рельсы

Это будет делать рельсам 4 и Ruby 2.0 и для вас рубин 2.0 вероятно, будет работать. При необходимости в рубиновой версии 1.9.3

Это, вероятно, будет работать лучше для вас сейчас и в будущем.
Лучше избегать всех этих номеров версий для других драгоценных камней, чтобы избежать проблем с версией, которые вы испытываете. Вы хотите потратить меньше времени на это и больше времени на фактическое приложение, код рельсов, код ruby ​​и т. Д. Большинство драгоценных камней могут сами определить правильные версии и зависимости.

Попробуйте быстро сделать другое приложение таким образом (сначала убедитесь, что вы «cd ..» из этого приложения, прежде чем снова введите новую команду rails). Вы также увидите, что выполнение нового приложения является удивительно частым случаем по сравнению с некоторыми другими, более старыми структурами.

+0

Привет @Michael спасибо за ответ. Не могли бы вы подробнее рассказать о моем удалении версий, тем лучше? Учебное пособие, которое я выполняю, соответствует абсолютно противоположному: установка ver sions является лучшим, поэтому у вас есть определенная «структура» и избегайте того, чтобы новая версия пакета нарушала что-то в вашей среде. – JSBach

+1

Хотя я могу понять учебный совет, чтобы все было точно указано, все меняется так быстро, что такого рода жесткое кодирование просто приводит к проблемам, особенно во всех этих вспомогательных драгоценных камнях. Хорошо, что рельсы 4.0 сейчас «текущие» сейчас все равно. Поэтому я хочу сказать, что в лучшем случае можно указать рельсы и рубиновые версии, но остановитесь там, или вы начнете получать проблемы с номерами версий всех этих вспомогательных драгоценных камней, которые вы будете тратить время на решение вместо того, чтобы изучать рельсы и писать приложение. –

+0

Да, это имеет смысл. При создании «реальных приложений» я буду определять только эти две версии. Но для учебника я буду стараться использовать версии как есть, поэтому у меня такая же среда, как у автора :) спасибо за совет! – JSBach

0

Решен: У меня был database_url указывающим на БД Postgres в моей системной переменной среде. Я сделал это, когда долгое время смотрел учебник по герою. Я удалил его, и теперь он работает нормально.

Смежные вопросы