Cách phổ biến nhất để lưu trữ dữ liệu cấu hình trong Ruby là sử dụng YAML:
settings.yml
user1:
path:/
days: 5
user2:
path: /tmp/
days: 3
Sau đó tải nó trong mã của bạn như thế này:
require 'yaml'
settings = YAML::load_file "settings.yml"
puts settings.inspect
Bạn có thể tạo tệp YAML sử dụng to_yaml
:
File.open("settings.yml", "w") do |file|
file.write settings.to_yaml
end
Điều đó nói rằng, bạn có thể đưa mã Ruby thẳng cũng có thể, sử dụng load
:
load "settings.rb"
Tuy nhiên, bạn không thể truy cập các biến địa phương bên ngoài tập tin, do đó bạn sẽ phải thay đổi mã của bạn để sử dụng một biến dụ hoặc một biến toàn cầu:
settings.rb
SETTINGS = {
'user1' => { 'path' => '/','days' => '5' },
'user2' => { 'path' => '/tmp/','days' => '3' }
}
@settings = { 'foo' => 1, 'bar' => 2 }
Sau đó tải nó như sau:
load "settings.rb"
puts SETTINGS.inspect
puts @settings.inspect
Nguồn
2010-10-11 05:26:05
Tốt câu trả lời, nhưng bạn quên 'eval' – glebm
@glebm: Vâng, và có mục đích. Tôi sử dụng 'eval' khi đó là tùy chọn duy nhất có sẵn, không phải khác. –
đúng, nhưng chỉ để người đọc biết kẻ thù của mình tôi sẽ đề cập đến nó :) – glebm