在 sinatra 中,我有以下内容:
config = YAML.load_file('sinatra_resources/server.yml')
usernamedk = config["dkuser"]
passworddk = config["dkpass"]
passwordse = config["sepass"]
usernamese = config["seuser"]
database = config["database"]
cpooldk = OCI8::ConnectionPool.new(1, 5, 2, usernamedk, passworddk, database)
cpoolse = OCI8::ConnectionPool.new(1, 5, 2, usernamese, passwordse, database)
当我在路由中使用这些值中的任何一个时,它都可以正常工作。但是我想在函数中使用它们,当我引用这些变量等时。
作为我的问题的一个例子,如果我有一个函数
def getuser(lang)
if lang == "se" then
return usernamese
else
return usernamedk
end
在一条路线内我有 user = getuser(lang)
然后当我尝试用 lang = "se" 调用它时,我发现变量 usernamese 是未定义的。同样的事情适用于我想在多个路由之间共享的函数中使用的所有变量。
我尝试了以下方法:配置做
set :env, "local"
set :usernamedk, config["dkuser"]
set :passworddk, config["dkpass"]
set :passwordse, config["sepass"]
set :usernamese, config["seuser"]
set :database, config["database"]
set :cpooldk, OCI8::ConnectionPool.new(1, 5, 2, setting.usernamedk, setting.passworddk, setting.database)
set :cpoolse, OCI8::ConnectionPool.new(1, 5, 2, setting.usernamese, setting.passwordse, setting.database)
end
但我得到了错误 undefined local variable or method `usernamedk' for main:Object (NameError)