シナトラでは、私は次のものを持っています:
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が未定義であることがわかります。複数のルート間で共有される関数で使用する上記のすべての変数に同じことが当てはまります。
私は次のことを試しました:configure do
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
しかし、main:Object(NameError)のエラー未定義のローカル変数またはメソッド`usernamedk'が返されました