2014-07-24 2 views
7

저는 Ruby on Rails에 익숙하지 않고 제 질문에 대한 대답이 매우 간단하다고 생각합니다. 그러나 찾을 수 없습니다. 나는 최근에 프로젝트를 만들고 "레일은 비계를 생성합니다 ..."라고 사용했습니다. 모든 것이 잘 작동했습니다. 데이터베이스에 다른 열을 추가하여 "레일스 마이그레이션 생성 ..."을 사용했습니다.이 후에도 모든 것이 잘 수행되었습니다. 문제는 서버를 중지하고 다시 시작한 후에 시작되었습니다. 지금은 Rails.application.database_configuration를로드 할 수 없습니다이 오류를 심리학 :: BadAlias ​​ 를 얻을 : 알 수없는 별칭 : 기본`Rails.application.database_configuration`을로드 할 수 없습니다 : 알 수없는 별칭 : 기본값

나는이 Requesting a ruby-on-rails application gives Psych::BadAlias error을 발견하지만 명확한 답을하지 않았다. 여기

여기
# 

    <<: *default 
    database: db/development.sqlite3 


    test: 
    <<: *default 
    database: db/development.sqlite3_test 

    production: 
    <<: *default 
    database: db/development.sqlite3_production 

내가

class AddHardwareToComputers < ActiveRecord::Migration 
    def change 
    add_column :computers, :hardware, :string 
    end 
end 

여기 내 schema.rb

입니다 마이그레이션을 한 후 genereated 파일입니다 ... 내 database.yml을 파일 같은 모습입니다
ActiveRecord::Schema.define(version: 20140723203054) do 

    create_table "computers", force: true do |t| 
    t.string "name" 
    t.string "serial_number" 
    t.string "user" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "hardware" 
    end 

end 

도움이 될만한 정보가 있습니다. 고맙습니다.

답변

2

당신 YAML 파일

당신이 필요로하는 모든 default: &default 대신 defaults: &defaults로 변경하고 당신이 잘되어야합니다입니다 기본 권리 경로에서 다음

defaults: &defaults 
    adapter: mysql2 
    encoding: utf8 

development: 
    <<: *defaults 
    database: app_development 

test: 
    <<: *defaults 
    database: app_test 
+0

제안 사항을 .yml 파일에 추가했지만 문제를 해결하지 못했습니다. 내가 sqlite3을 사용하고 있다는 차이점이 있습니까? – user3868747

+0

같은 오류가 발생합니까? – jvnill

+0

예 동일한 오류가 발생합니다. 나는 .yml 파일을 당신의 제안처럼 보이기까지 바 꾸었습니다. – user3868747

1

jvnill의 점처럼 구성을 포함해야합니다.

+0

이 이유는 무엇입니까? –

3

나는 이것이 오래된 질문이지만 동일한 문제를 찾고 있었고 jvnill 's + CocoHot의 제안을 사용하여 해결했다고 알았습니다. 의견을 말할만한 충분한 점수가 없으므로 수정 된 솔루션을 새로운 답변으로 추가하고 있습니다.

우선 &defaults&default (단수)으로 변경하십시오. 둘째, sqlite3을 사용하고 있기 때문에 (나는 현재) mysql2sqlite3으로 바꿉니다.

defaults: &default 
    adapter: sqlite3 
    encoding: utf8 

development: 
    <<: *default 
    database: db/development.sqlite3 

test: 
    <<: *default 
    database: db/development.sqlite3_test 

production: 
    <<: *default 
    database: db/development.sqlite3_production 
2

나는 다른 케이스를 발견했다. 사실 나는 이전 코드를 openshift의 새로운 코드와 병합했다. 그리고 database.yml 파일에 두 개의 기본값과 두 개의 개발 모드가 생성되었습니다. 중복 파일을 삭제하고 Yaml 파일을 아래처럼 만들었습니다. 그것은 차이 confs 필요한 내 enviroments에 모두로

development: 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: root 
    password: admin 
    database: abc 
    timeout: 5000 

production: 
    adapter: mysql2 
    database: <%=ENV['OPENSHIFT_APP_NAME']%> 
    username: <%=ENV['OPENSHIFT_MYSQL_DB_USERNAME']%> 
    password: <%=ENV['OPENSHIFT_MYSQL_DB_PASSWORD']%> 
    host:  <%=ENV['OPENSHIFT_MYSQL_DB_HOST']%> 
    port:  <%=ENV['OPENSHIFT_MYSQL_DB_PORT']%> 
    min_messages: ERROR 
    reconnect: false 

(내가 참조를 위해 내 YAML 파일을 붙여 넣을거야) 을했다, 그래서 당신이 볼 수있는 내가 기본에 모두 케이스와 정의 된 각각의 케이스를 제거 . 어떤 사람은 매우 절박한 상황에 처하게하는 것이 좋을 것입니다. 기본 사례를 전혀 제거하지 말아야합니다.

관련 문제