2010-08-21 38 views
5

Tôi có ứng dụng đường ray và từ phần quản trị của trang web tôi muốn có thể bật/tắt các cài đặt nhất định như phân phối quảng cáo hoặc nhúng mã theo dõi Google Analytics.Tôi nên lưu cài đặt cấu hình trang web trên trang web cho ứng dụng Rails ở đâu?

Có cách nào tốt nhất cho điều này trong Rails không? Một suy nghĩ đã tạo ra một bảng cài đặt và lưu trữ các giá trị trong đó.

+0

Bạn sẽ hiển thị HTML như thế nào? – s84

+1

Có vẻ như bạn đang chỉnh sửa cài đặt thời gian chạy, có thể thuộc về một bảng cơ sở dữ liệu. – meagar

+0

Sam, tôi đã nghĩ HTML sẽ được hiển thị trong tệp bố cục ứng dụng có thể sử dụng phương thức trợ giúp tùy chỉnh. – Moe

Trả lời

0

Bạn có thể lưu cấu hình của mình trong thư mục config/. Tôi biết một vài ứng dụng lưu trữ các cấu hình của chúng trong thư mục đó. (ví dụ: teambox.yml trong Teambox).

1

Tôi sẽ lưu trữ thông tin này trong cơ sở dữ liệu trừ khi bạn không có quyền truy cập vào một cơ sở dữ liệu. Nếu bạn không có quyền truy cập vào cơ sở dữ liệu, bạn có thể lưu trữ tệp trong thư mục cấu hình.

Dưới đây là ví dụ về mã điều khiển để đọc và ghi vào tệp cấu hình.

def featured_specials 
    @featured_specials = YAML::load_file("#{RAILS_ROOT}/config/featured_specials.yml") 
end 

def save_featured_specials 
    config_file = "#{RAILS_ROOT}/config/featured_specials.yml" 
    File.new(config_file, "w") unless File.exist?(config_file) 
    File.open(config_file, "w") do |f| 
    f.write(params['formvars'].to_yaml) 
    end 
    flash[:notice] = 'Featured Specials have been saved.' 
    redirect_to :action => 'featured_specials' 
end 

LƯU Ý: mã này có thể được dọn sạch một chút nhưng phải là một ví dụ tốt.

3

Nếu bạn sẽ không cho cấu hình thời gian chạy, sau đó bạn có thể sử dụng một cái gì đó giống như máy phát điện tiện lợi-config rbates': http://github.com/ryanb/nifty-generators

Tôi đã sử dụng nó cho các thiết lập cấu hình đơn giản, xây dựng theo thời gian. Vì vậy, ví dụ, khi lưu trữ thông tin cổng thanh toán cho một trang web thương mại điện tử, load_gateway_config.yml của tôi trông như thế này:

require 'ostruct' 

raw_config = File.read(Rails.root + "config/gateway_config.yml") 
GATEWAY_CONFIG = YAML.load(raw_config)[Rails.env].symbolize_keys 

#allow dot notation access 
GatewayConfig = OpenStruct.new(GATEWAY_CONFIG) 

Sau đó, để lấy một thiết lập từ tập tin cấu hình của bạn, bạn sẽ gọi cho một cái gì đó giống như

GatewayConfig.username 

Một tùy chọn khác là configuration gem cung cấp cho bạn cách sử dụng ký hiệu dấu chấm tương tự, nhưng cũng có nhiều tùy chọn nâng cao hơn như đặt giá trị mặc định và tệp cấu hình là Ruby thay vì YAML.

0

Tôi đã upvoted một câu trả lời khác nhau, nhưng đối với một cách nhanh chóng và bẩn, bạn có thể thả một biến lớp trong environment.rb, sau khi khối mã khởi tạo.

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