2016-12-23 86 views
1

在下面的脚本puts输出获取Ruby模板的字符串?

admin1:[email protected] 

,我需要有它的用户名和密码分开,所以我可以用它为模板

[admins] 
<%= couchdbAdminUri.user %> = <%= couchdbAdminUri.password %> 

问题

如何将couchdbAdminUri转为对象,以便我可以使用上面的模板?

#!/usr/bin/ruby 

require 'erb' 
require 'yaml' 
require 'uri' 
require 'awesome_print' 

data_root = '/vol' 
config_root = File.join(data_root, 'config') 

couchdb = YAML::load_file(File.join(config_root, 'couchdb.yaml')) 
couchdbAdminUri = URI(couchdb['_admin']['db']) 

puts couchdbAdminUri 

b = binding 
tmp = ERB.new File.read("local.ini.erb"), nil, "%" 
File.open("local.ini", "w") do |f| 
    f.write(tmp.result(b)) 
end 

回答

2

,你可以创建一个类

#!/usr/bin/ruby 

require 'erb' 
require 'yaml' 
require 'uri' 
require 'awesome_print' 

data_root = '/vol' 
config_root = File.join(data_root, 'config') 

couchdb = YAML::load_file(File.join(config_root, 'couchdb.yaml')) 
result = URI(couchdb['_admin']['db']).split(':') 

class CredentialURI 
    attr_reader :user, :password 
    def initialize(user, pwd) 
    @user = user 
    @password = pwd 
    end 
end 

user = result.first 
password = result.last 

couchdbAdminUri = CredentialUri.new(user, password) 

b = binding 
tmp = ERB.new File.read("local.ini.erb"), nil, "%" 
File.open("local.ini", "w") do |f| 
    f.write(tmp.result(b)) 
end