我使用Sinatra编写了一个使用ActiveRecord访问Oracle数据库的服务器(尽管这不是Rails应用程序)。我用Sinatra的“经典”风格写了它,之前就像这样启动了服务器:
bundle exec ruby bin/server.rb
我还使用了require 'thin'
,并且Thin被神奇地用作HTTP服务器。但是,我需要更改Thin的默认超时,因此我转换为rackup config.ru
文件。我现在就像这样启动服务器:
bundle exec thin -C config/thin.yml -R config/config.ru start
但是,由于这样做,我无法使用服务器连接到Oracle数据库。我正在使用服务名称并且TNS_ADMIN
环境变量已正确设置,如果未使用Thin启动,我可以与sqlplus
甚至同一服务器连接。使用Thin启动,当我尝试启动连接时,我得到OCIError - ORA-12154: TNS:could not resolve the connect identifier specified
。
为使用Thin启动的服务器设置环境变量的正确方法是什么?解决方案here不起作用,因为我无法为ruby-oci8提供信息,它会自动生成从环境中读取它们。