2015-02-23 16 views
5

Làm việc với sách Learn Ruby on Rails, tôi bị kẹt trong phần hướng dẫn nơi bạn kết nối với Google Drive để lưu biểu mẫu vào bảng tính.Biến môi trường là không trong ứng dụng Rails (không thể kết nối với Google Drive)

Tôi không thể xác thực w/Google vì Rails.application.secrets.email_provider_usernameRails.application.secrets.email_provider_password là không. Cụ thể hơn, có vẻ như ứng dụng đường ray của tôi không nhìn thấy bất kỳ biến môi trường nào của tôi.

tôi đã xác minh rằng các biến được thiết lập đúng:

ynkwinl-ujurvt0:learn-rails katie$ printenv | grep GMAIL_USERNAME 
GMAIL_USERNA[email protected] 

Và từ giao diện điều khiển:

learn-rails :001 > ENV["GMAIL_USERNAME"] 
=> "[email protected]" 

Nhưng cố gắng truy cập nó thông qua Rails:

learn-rails :001 > Rails.application.secrets.email_provider_username 
=> nil 

Các dòng liên quan của secrets.yml:

email_provider_username: <%= ENV["GMAIL_USERNAME"] %> 

Tôi đã bị kẹt trong này một giờ và không thể tìm thấy câu trả lời (câu hỏi trước về chủ đề này có một kịch bản hơi khác).

Tôi đã làm việc xung quanh nó bằng cách mã hóa cứng tên người dùng/mật khẩu của mình vào tệp secrets.yml, nhưng tôi muốn hiểu điều gì đang diễn ra để tham khảo trong tương lai.

Full 'secrets.yml' tập tin để tham khảo:

development: 

    email_provider_username: <%= ENV["GMAIL_USERNAME"] %> 
    email_provider_password: <%= ENV["GMAIL_PASSWORD"] %> 
    domain_name: example.com 
    mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %> 
    mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %> 
    owner_email: <%= ENV["OWNER_EMAIL"] %> 
    secret_key_base: very_long_random_string 

test: 
    secret_key_base: very_long_random_string 

# Do not keep production secrets in the repository, 
# instead read values from the environment. 
production: 
    email_provider_username: <%= ENV["GMAIL_USERNAME"] %> 
    email_provider_password: <%= ENV["GMAIL_PASSWORD"] %> 
    domain_name: <%= ENV["DOMAIN_NAME"] %> 
    mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %> 
    mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %> 
    owner_email: <%= ENV["OWNER_EMAIL"] %> 
    secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> 
+0

Bạn có thể đính kèm nội dung của secret.yml không? – intale

+0

Đã thêm vào bài đăng gốc. – Katie

+0

Không có gì xảy ra. Env kiểm tra duy nhất không có các khóa đó. Bạn có thể thực hiện 'Rails.env' trong bảng điều khiển đường ray để đảm bảo rằng bạn đang tải môi trường chính xác không? – intale

Trả lời

0

Hãy thử:

Rails.application.secrets['email_provider_username'] 
7

Tôi có vấn đề này và nó được gây ra bởi spring chạy máy chủ trong nền ngay cả khi tôi bỏ máy chủ trong thiết bị đầu cuối.

Nếu đây là nguyên nhân trong trường hợp của bạn, bạn có thể sửa lỗi bằng cách chạy spring stop.

+1

Chạy 'dừng chân mùa xuân' trong Thiết bị đầu cuối của tôi (không phải thanh điều khiển đường ray) hoạt động. Cảm ơn! –

+0

bạn là một vị cứu tinh! Tôi nghĩ rằng rubymine bắt đầu mùa xuân cho tôi vì lý do gì ... tôi thậm chí không sử dụng nó. cảm ơn – manroe

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