Điều gì bắt đầu như một sự khó chịu nhỏ giờ đây đã trở thành đau đầu. Tôi đang xây dựng một ứng dụng Rails 4 và đang sử dụng Foreman cho thiết lập dev của tôi với một tệp Procfile và .env để cấu hình. Khi tôi đặt biến ENV trong tệp .env, tệp được ứng dụng của tôi chọn chính xác. Trong trường hợp này, tôi đang thiết lập một số tùy chọn ENV cho Paperclip trong bộ khởi tạo.Tại sao bộ khởi tạo Rails của tôi lưu bộ nhớ đệm các biến ENV trong giao diện điều khiển (Foreman, Dev env)
Vấn đề xảy ra khi tôi thay đổi giá trị của các biến ENV. Trong giao diện điều khiển, nếu tôi nhập ENV ["MY_VAR"], nó sẽ hiển thị giá trị mới. Tuy nhiên, giá trị được sử dụng trong bộ khởi tạo của tôi, có lẽ đã được chạy khi tôi khởi động bàn điều khiển, hiển thị giá trị cũ! Không nơi nào trong dự án của tôi là giá trị cũ được liệt kê ở bất kỳ đâu. Điều này khiến tôi tin rằng môi trường đang được lưu trữ bằng cách nào đó hoặc các biến env đang được xuất khẩu đến trình bao của tôi. Tôi đang chạy ra khỏi nơi để xem xét bất kỳ trợ giúp sẽ được đánh giá rất nhiều! Tôi đang phát triển trên máy Mac (10.9.4) với Ruby 1.9.3-p374 và Rails 4.1.0.
Ví dụ:
ROOT/.env
S3_BUCKET=mybucket
config/initializers/paperclip.rb
Paperclip::Attachment.default_options[:s3_credentials] = {bucket: ENV["S3_BUCKET"]}
Nếu tôi thay đổi giá trị của S3_BUCKET để "newbucket" và chạy "quản đốc chạy đường ray c "hoặc" đường ray c "để vào bảng điều khiển, đây là những gì sẽ xảy ra:
ENV["S3_BUCKET"] # => "newbucket"
Paperclip::Attachment.default_options[:s3_credentials] # => {bucket: 'mybucket'}
Tôi nên đề cập đến hành vi này cũng xảy ra trong các lớp học của tôi mà tôi đã đưa vào/lib. Tôi tưởng tượng điều này là tất cả do một cái gì đó ngớ ngẩn mà tôi đã bỏ qua. Bất kỳ ý tưởng?
Nếu bạn thay đổi env vars và muốn ứng dụng của bạn chọn chúng, bạn phải khởi động lại ứng dụng. Điều này luôn xảy ra. – nzifnab
Vâng, tất nhiên. Để làm rõ mặc dù, SAU KHI khởi động lại ứng dụng, các thay đổi không được chọn trong trình khởi tạo, nhưng chúng được chọn trong băm ENV. – Spencer
Bạn đang sử dụng 'mùa xuân' bằng bất kỳ cơ hội nào? (Kiểm tra Gemfile của bạn.) – fny