Вопрос по postgresql, ruby-on-rails – bundle exec rake assets: precompile - в конфигурации базы данных не указан адаптер

9

После 24 часов попыток найти проблему с моим приложением. Я наконец нашел проблему.

Я побежал

rake assets:precompile RAILS_ENV=production

и я продолжал получать эту ошибку.

/Users/vezu/.rvm/rubies/ruby-1.9.3-p194/bin/ruby /Users/vezu/.rvm/gems/[email protected]/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
rake aborted!
database configuration does not specify adapter

Tasks: TOP => environment
(See full trace by running task with --trace)
rake aborted!
Command failed with status (1): [/Users/vezu/.rvm/rubies/ruby-1.9.3-p194/bi...]

Мой файл database.yml выглядит так

development:
  adapter: postgresql
  host: localhost
  encoding: unicode
  database: ndoda_development
  pool: 5
  username:
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: ndoda_test
  pool: 5
m8 где ваша производственная конфигурация БД?)) Yuri Barbashov
Тебе это не нужно на Heroku. Heroku справится с этим для вас. Извините, я забыл упомянуть, что я использую Heroku. Benjamin

Ваш Ответ

7   ответов
-2

rake assets:precompile:all

1

dummy production запись в вашем местномconfig/database.yml файл

production:
  <<: *default
  database: your_local_database_name

Я столкнулся с той же ошибкой в 2016 году с Rails 4.2.6 и Capistrano 3.4. Мы предварительно компилировали ресурсы во время сценария развертывания непосредственно перед их загрузкой вместе с кодом, но собираем ресурсы: прекомпиляция требует некоторой производственной записи, даже если она является фиктивной. Источник:https://github.com/TalkingQuickly/capistrano-3-rails-template/issues/12

29

b

config.assets.initialize_on_precompile = false

И все работает.

PSA в Rails 4.x эта опция была удалена
Просто примечание: убедитесь, что вы добавили вышеуказанную строку в ваш config / application.rb. Я добавил его в config / environment / production.rb по ошибке, который НЕ будет работать
10

    активы рейка: прекомпиляция RAILS_ENV = разработка

Он пытается загрузить вашу производственную среду, когда ваш database.yml не включает ее.

Примечание для тех, кто использует Asset Sync. Установка RAILS_ENV для разработки предотвратит синхронизацию Asset Sync после компиляции.
1

rake assets:precompile RAILS_ENV=production

Получите доступ к вашему серверу через ssh и введите эту команду, это должно помочь.

7

development:
  adapter: postgresql
  host: localhost
  encoding: unicode
  database: ndoda_development
  pool: 5
  username:
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: ndoda_test
  pool: 5

# Add the below...

production:
  adapter: postgresql
  host: localhost
  encoding: unicode
  database: ndoda_production
  pool: 5
  username:
  password:

Heroku перезапишет ваш database.yml своей версией, независимо от того, что вы там поместили.Howeverдля вашей задачи rake, выполняемой в производственной среде, требуется переменная, поэтому присвойте ей фиктивную переменную.

Как отмечалось выше, вы также можете добавить & config.assets.initialize_on_precompile = false & apos; к вашей продукции. Если установлено, Heroku требует, чтобы оно было установлено как «ложное».

Стоит отметить, что начиная с Rails 4 Heroku больше не перезаписывает ваш database.yml
1

просто передайте фиктивную базу данных, как упомянуто в этой статье:

https://iprog.com/posting/2013/07/errors-when-precompiling-assets-in-rails-4-0

Команда: bundle exec rake RAILS_ENV = production DATABASE_URL = postgresql: // user: [email protected]/dbname assets: precompile

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