我正在尝试使用dotenv gem安全地存储oci8连接的密码。我的.env文件如下所示:
# this file is stored in the same location as config.ru
SCOTT_PASS='tiger'
这是我的config.ru文件:
require 'dashing'
require 'dotenv'
Dotenv.load
configure do
set :auth_token, 'YOUR_AUTH_TOKEN'
helpers do
def protected!
# Put any authentication code you want in here.
# This method is run before accessing any resource.
end
end
end
map Sinatra::Application.assets_prefix do
run Sinatra::Application.sprockets
end
run Sinatra::Application
这是失败的工作。它因空密码错误(ORA-01005)而失败。
SCHEDULER.every '1m', :first_in => 0 do |job|
conn = OCI8.new('scott', ENV['SCOTT_PASS'], 'orcl')
cursor = conn.parse("SELECT COUNT(*) FROM USER_TABLES")
cursor.exec
r = cursor.fetch
send_event('table_count', { current: r })
cursor.close
conn.logoff
end
我能够确认Dotenv.load工作正常,因为我能够成功设置其他变量,因此似乎有一些关于oci8连接的独特内容。
我是Ruby和编程的新手,所以我可能会忽略一些简单的东西。谢谢!
答案 0 :(得分:0)
这是一个相当模糊的问题,但根本原因是由于使用了复杂的密码(字母数字和特殊字符)。相同的密码在小型ruby脚本中正常工作,但在置于rufus调度程序下时失败。切换到没有数字或特殊字符的20+字符密码解决了这个问题。猜测可能需要某种类型的转义。