2012-04-03 24 views
18

Trong database.yml bạn xác định tất cả các cài đặt. Làm thế nào tôi có thể truy cập các cài đặt từ ruby? Tôi đã xem App::Application::config nhưng không thể tìm thấy ở đó. Ngoài ra, tôi nhớ mọi người đã có thể cấu hình các thiết lập cơ sở dữ liệu mà không có yaml, có ai biết làm thế nào không?cách kiểm tra tên cơ sở dữ liệu mà ActiveRecord sử dụng

Trả lời

25
Rails.configuration.database_configuration 

Điều này sẽ cung cấp cho bạn bảng băm có cấu hình cho từng môi trường của bạn. Ví dụ. để có được tên cơ sở dữ liệu phát triển của bạn:

Rails.configuration.database_configuration["development"]["database"] 
+13

Để có được cấu hình cơ sở dữ liệu hiện hành: 'Rails.configuration.database_configuration [Rails.env]' –

+0

Khi tôi cố gắng đầu vào lệnh của bạn tôi nhận được lỗi này: "Rails.configuration.database_configuration [development] [database]: lệnh không tìm thấy" - bất kỳ ý tưởng nào tại sao? – VoA

+0

Nếu ai đó thêm vào bất kỳ nơi nào trong cơ sở mã của bạn, database_configuration sẽ không cung cấp cho bạn cơ sở dữ liệu đang được sử dụng: 'ActiveRecord :: Base.connection.execute (" USE bleh ")' Điều này sẽ: 'ActiveRecord :: Base. connection.current_database' – Gerry

1

Để cõng trên các ý kiến ​​từ tsherif, bạn có thể chạy lệnh Rails.configuration bên đường ray giao diện điều khiển (đường ray c) để có được tên cơ sở dữ liệu.

+0

Sau đó, để thực sự chạy thiết lập lại bạn sử dụng heroku pg: đặt lại DATABASE_URL, sau đó làm theo lời nhắc. – tommyb67

21

Trong Rails 4.2, bạn có thể làm điều này:

ActiveRecord::Base.connection.current_database 
+0

Đây cũng là một câu trả lời tốt hơn như là một 'ActiveRecord :: Base.connection.execute (" USE bleh ") đơn giản' sẽ làm cho việc đọc từ cấu hình cơ sở dữ liệu là vô nghĩa. – Gerry

Các vấn đề liên quan