Ruby on rails 在database.yml中使用erb

Ruby on rails 在database.yml中使用erb,ruby-on-rails,devise,Ruby On Rails,Devise,为了安全起见,我更新了database.yml以从文件中获取凭据,并将其替换为通过erb调用从文件中读取信息的对象 在不涉及身份验证的情况下,这似乎可以正常工作,但在Desive生成的视图似乎出现故障的情况下 此版本的database.yml破坏了它: development: adapter: sqlserver host: my_server.xxx.rds.amazonaws.com port: 1433 database: MyDatabase username:

为了安全起见,我更新了database.yml以从文件中获取凭据,并将其替换为通过erb调用从文件中读取信息的对象

在不涉及身份验证的情况下,这似乎可以正常工作,但在Desive生成的视图似乎出现故障的情况下

此版本的database.yml破坏了它:

development:
  adapter: sqlserver
  host: my_server.xxx.rds.amazonaws.com
  port: 1433
  database: MyDatabase 
  username: <%= CredentialsManager.get_db_user %>
  password: <%= CredentialsManager.get_db_pass %> 
开发:
适配器:sqlserver
主持人:my_server.xxx.rds.amazonaws.com
港口:1433
数据库:MyDatabase
用户名:
密码:
但是控制台和不调用身份验证的页面在访问模型属性时没有问题

然而,像designe/sessions/new.html.erb这样的视图似乎在为用户模型寻找错误的位置。表单中断,出现如下错误,其中用户模型似乎没有“电子邮件”属性:

Processing by Devise::SessionsController#new as HTML
  Rendered devise/sessions/new.html.erb within layouts/application (6.0ms)
Completed 500 Internal Server Error in 18ms

ActionView::Template::Error (undefined method `email' for #<User >):
    3: <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
    4:     <div><%= f.label :email %>
    5:       <br/>
    6:       <%= f.email_field :email %></div>
    7: 
    8:     <div><%= f.label :password %>
    9:       <br/>
  app/views/devise/sessions/new.html.erb:6:in `block in _app_views_devise_sessions_new_html_erb__882742671_47657856'
  app/views/devise/sessions/new.html.erb:3:in `_app_views_devise_sessions_new_html_erb__882742671_47657856'


  Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
  Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
  Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (16.0ms)
通过designe::sessioncontroller处理#新的HTML格式 布局/应用程序中呈现的设计/sessions/new.html.erb(6.0ms) 在18毫秒内完成500个内部服务器错误 ActionView::Template::Error(未定义#的“email”方法): 3:resource_name,:url=>session_path(resource_name))do | f |%> 4: 5:
6: 7: 8: 9:
app/views/designe/sessions/new.html.erb:6:in'block in_app_view_designe_sessions_new_html_erb_882742671_47657856' app/views/designe/sessions/new.html.erb:3:在“app\u views\u designe\u sessions\u new\u html\u erb\u 882742671\u 47657856”中 呈现C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.11/lib/action\u dispatch/middleware/templates/rescues//u trace.erb(1.0ms) 呈现C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.11/lib/action\u dispatch/middleware/templates/rescues//u request\u and_response.erb(1.0ms) 呈现C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.11/lib/action\u dispatch/middleware/templates/rescues/template\u error.erb(16.0ms) 在调试器中检查| f |参数显示它具有class User的@object属性,但@object的@attributes哈希是空哈希,@column|u names是空数组

有人知道如何解决这个问题吗?我需要从database.yml中获取凭据,这是我想要的方法

环境轨道3.2.11 设计2.1.2
Warden 1.2.1

通过将数据库用户名从'asadmin_app'更改为'asadmin'解决了此问题
不知道为什么Desive不喜欢带下划线的db用户名,但对我来说这似乎是某种bug。Rails itsef和SQL Server(后台数据库)在用户名中没有问题,但是当Desive和warden参与进来时,事情会变得很糟糕。d

为了确保问题出在数据库上,尝试用用户名(没有erb)和密码替换
。我这样做了,这样一切都很好。也许问题是你在yml中调用了一个对象?当我们调用database.yml时,我们成功地使用了
,而且它一直工作不,不是这样。对象被找到、调用并返回正确的凭据。