2011-09-20 36 views

Trả lời

1

Heroku thực sự đặt ra một biến URL trong môi trường bằng cách mặc định

app_name = ENV['URL'].split(".").first 

Được tham chiếu ở đây: http://devcenter.heroku.com/articles/config-varshttp://ididitmyway.heroku.com/past/2010/11/9/sinatra_settings_and_configuration/

update: thực sự biến URL có thể không có ở đó theo mặc định, nhưng bạn luôn có thể thêm một biến môi trường "tên ứng dụng" là một ưu tiên, trừ khi bạn đã cố gắng tránh mọi cách tiếp cận đó.

cập nhật 2: thực sự, cách tiếp cận khác, rõ ràng nhưng hạn chế, sẽ lấy miền ra khỏi biến yêu cầu, nhưng điều này giới hạn bạn với bộ điều khiển của bạn. http://guides.rubyonrails.org/action_controller_overview.html#the-request-object

+1

Tôi đã kiểm tra cấu hình và không có biến với tên ứng dụng trong đó. Có, thiết lập cấu hình là một cách tiếp cận. –

+0

tính năng này không phải lúc nào cũng hiệu quả, bởi vì bạn có thể đã sử dụng cách viết khác cho ứng dụng của mình khi bạn đã kiểm tra trong .. ví dụ: ứng dụng thử nghiệm thay vì test_app – Tilo

1
Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'') 
=> "test-app" 

đó là tên của ứng dụng Rails, như nó đã được đánh vần khi bạn đã làm 'đường ray mới app-tên'

Sử dụng này, bạn có thể làm điều này:

class << Rails.application 
    def name 
    Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'') 
    end 
end 

Rails.application.name 
=> 'test-app' 
+1

Thực ra, đó là tên của cookie –

14

Các giải pháp với ENV['URL'] sẽ chỉ hoạt động trong các yêu cầu.

Vì vậy, nếu bạn cần phải biết id ứng dụng bên ngoài một yêu cầu, bạn là thiết lập một biến cấu hình như thế này

heroku config:add APP_NAME=<myappname> --app <myappname> 

Và cho phép lab feature cho phép bạn sử dụng chúng trong biên dịch

heroku labs:enable user-env-compile -a myapp 

Và bây giờ tôi có tên ứng dụng của mình ở đây:

ENV["APP_NAME"] # '<myappname>' 

Điều này rất tiện lợi nếu bạn muốn tải tệp cấu hình khác nhau (nói với thông tin đăng nhập oauth) dựa trên tên hoặc id của ứng dụng.

+0

'labs: enable' không phải là lệnh heroku. Có suy nghĩ gì không? – baash05

+2

Có thể kiểm tra phiên bản đá quý heroku của bạn hoặc cài đặt toolbelt heroku. Hoặc xem tài liệu/liên hệ với heroku. https://devcenter.heroku.com/categories/labs Hãy chắc chắn chia sẻ những gì đã giúp! – hakunin

+0

Làm việc cho tôi mà không có lệnh phòng thí nghiệm heroku. – abrocks

0

Nếu bạn đang chạy trong các môi trường khác nhau trong mỗi ứng dụng trên mỗi this, bạn chỉ có thể đặt biến trong staging.rb hoặc production.rb.

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