2014-09-01 4 views
0

У меня есть database.yml, который использует переменные окружения, например:рельсы консоль не будет подключаться к базе данных

production: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: <%= ENV['RAILS_DB_NAME'] %> 
    pool: 5 
    host: 127.0.0.1 
    port: 3306 
    username: <%= ENV['RAILS_DB_USER'] %> 
    password: <%= ENV['RAILS_DB_PASS'] %> 

Однако, когда я использую:

$ export RAILS_DB_NAME="rails_db" 
$ rails c production 
> User.all 
I get an error: 
Mysql2::Error: Access denied for user 'root'@'localhost' (using password: NO) 

Я могу видеть мою переменную environement в одной и той же консоли:

> ENV['RAILS_DB_NAME'] 
"rails_db" 

Но если сбросить активное соединение CONFIG его равна нулю:

> ActiveRecord::Base.connection_config 
{:adapter=>"mysql2", :encoding=>"utf8", :reconnect=>false, :database=>nil, :pool=>5, :host=>"127.0.0.1", :port=>3306, :username=>nil, :password=>nil} 

Любые идеи, что пойдет не так?

Как я могу узнать, почему приложение rails не получает переменные окружения?

TIA!

Обновление: я должен уточнить, что $ rails db отлично работает. Это всего $ rails c, который не может подключиться к db.

Обновление 2: Когда я клонирую проект в новую папку и устанавливаю пакет, он отлично работает там. Это должно быть быть чем-то с моей папкой. Diff не показывает различий. Weird!

ответ

0

я обнаружил исправление - но я не знаю, почему это проблема .. но .. рельсы не нравится иметь проект в папке с именем рельсам!

Мой рельсы проект в папке:

/var/deployed/rails 

, когда я переименовать его:

/var/deployed/myapp 

Тогда $ рельсам консоль отлично работает, чтобы поговорить с БД.

Странно!

1

Его не так много Rails/ActiveRecord, но MySQL не разрешает соединение. Почему ваши username и password не указаны в config/database.yml?

Откройте консоль и MySQL запустить это:

> grant all on rails_db.* to [email protected]; 

(заменить rails_db с тем, что ваше настоящее имя БД.)

Это позволит входящие соединения на основе умолчанию username=root и пустым паролем. Если вы закончите указывать username и password в своей конфигурации, повторите запуск заявления о выдаче с этими учетными данными.

E.g.

> grant all on rails_db.* to [email protected] identified by 'somepassword'; 
+0

Извините, я оставил его выше. Он указан, а также переменные среды. И это не корень. Ошибка выше, потому что все три места, которые я называю ENV [] (база данных, имя пользователя, пароль), приходят в нуль. Конфигурация базы данных отлично работает, я запускаю $ rails db. Это всего лишь $ rails c, что нет. – peterept

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