2011-11-18 20 views
5

Warbler muốn bạn chỉ định RAILS_ENV khi tạo WAR. Điều này sau đó được đặt bên trong web.xml của WAR được tạo ra. Tuy nhiên, nếu bạn có thể tạo một WAR đã học được RAILS_ENV từ môi trường, bạn có thể tạo một WAR có thể được sử dụng để dàn dựng hoặc sản xuất - nói cách khác, một chế độ quản lý cấp trên nơi WAR có thể được kiểm tra và sau đó triển khai mà không bị thay đổi.Sử dụng JRuby Warbler, có thể tạo ra một WAR có thể học RAILS_ENV từ biến môi trường không?

Trả lời

4

JRuby-Rack đã được thiết lập để đọc từ RAILS_ENV trước khi được đưa vào web.xml, do đó phần đó là vàng. Điều duy nhất bạn cần phải đánh bại là đây rails.erb mẫu đó được sáp nhập vào một META-INF/init.rb bên trong tập tin chiến tranh:

ENV['RAILS_ENV'] = '<%= config.webxml.rails.env %>' 

Không có một cách thực sự tốt để làm điều này vào lúc này, nhưng bạn có thể ghi đè lên Warbler::Jar#add_init_file như sau ở đầu số config/warble.rb của bạn để xóa mẫu Rails:

class Warbler::Jar 
    alias_method :orig_add_init_file, :add_init_file 
    def add_init_file(config) 
    config.init_contents.delete("#{config.warbler_templates}/rails.erb") if config.init_contents 
    orig_add_init_file(config) 
    end 
end 
+0

Cảm ơn bạn! BTW, mục đích của mẫu Rails (rails.erb) trong META-INF/init.rb là gì? Sẽ có bất kỳ tác dụng phụ nào từ việc loại bỏ nó? –

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