- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试弄清楚如何从数据库中提取数据,而无需在每个 ruby 文件的顶部放置连接字符串。
我正在通过我正在组装的一个 Sinatra 小应用程序学习 ruby 的基础知识,该应用程序可以从 MSSQL 数据库中提取数据。
到目前为止,我已经成功地创建了各种简单的 erb 页面,这些页面通过在每个文件的顶部使用以下代码结构来显示来自 MSSQL 数据库的数据:-
<% client = TinyTds::Client.new(:username => 'name', :password => 'password', :dataserver => 'hostname', :database => 'database') %>
<% data = client.execute("SELECT * from tablename") %>
从书籍、指南和在线教程中,我发现基于大量与 PostgreSQL 或 MySQL 数据库有关的配置,在我看来,我需要创建一个中央文件来存储我的连接数据(例如数据库。 yml 文件),然后在我的应用中以某种方式引用它。
这是否正确,我是否应该在我的 main.rb 文件中这样做,以便我的每个 .erb 文件都不需要连接字符串,或者我是否还必须在每个 .erb 文件中引用数据库?
我注意到创建数据库配置变量的引用,例如:-
db_config = YAML.load(File.Open("/path_to_file/database.yml")) [ENV['RAILS_ENV']]
但这显然适合 Rails 应用。
我可以为我的 sinatra 驱动的“应用程序”做类似的事情吗?
谢谢。
最佳答案
这应该有效:
require "sinatra"
require "sinatra/config_file"
config_file 'path/to/config.yml'
DB = TinyTds::Client.new(
:username => settings.name,
:password => settings.password,
:dataserver => settings.hostname,
:database => settings.database
)
get '/' do
@result = DB.do_stuff
haml :index
end
不过,我建议您寻找支持 TinyTDS 的 ORM,并使用它来设置数据库连接和运行查询。我用 Sequel很多I know it supports TinyTDS ,但我相信其他人也会这样做。
我还建议不要将诸如数据库设置之类的内容放入要 checkin 源代码管理的文件中,因为它是敏感信息。生产环境我比较喜欢把这种东西放到环境变量里,开发环境用config文件加载环境变量(为了方便)。使用上面的例子:
DB = TinyTds::Client.new(
:username => ENV["name"],
:password => ENV["password"],
:dataserver => ENV["hostname"],
:database => ENV["database"]
)
这些 env 变量被加载到生产服务器的内存中,这使它们更加安全。对于开发,我在启动 Sinatra 之前加载 YAML 文件,将每个值添加到 ENV var。我并不是说这是一种标准方式,但我就是这样做的。
关于ruby-on-rails - 如何通过 database.yml(或其他)在 ruby/sinatra 中引用 tiny_tds 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16648623/
我已经成功创建了我的第一个 django 项目。 我的项目 foo 和 foobar 中有两个应用程序。 我在每个应用程序文件夹中创建了一个名为“fixtures”的文件夹。我没有在我的setting
我遵循了 cap + nginx + unicorn 上的文档,但在理解如何正确进行数据库部署时遇到了一些问题。 /config/database.yml 不应该在 git repo 中(最好) 在/
GitLab server can't start .原因很可能是 gitlab.yml 配置文件不正确。 用什么工具检查yml语法是否正确? 我试过 Notepad++ 和 SublimeText,
我们有一个站点范围的 config.yml 文件,它联系 api key 等... 我的另一个 YML 文件能否访问 config.yml 中的值? 配置文件: development: th
我正在尝试在我的第一个测试应用程序中设置用户和安全管理,但我已经有点迷失了,不知道什么是做什么的。 到目前为止我的设置:Symfony 2.5、SonataUserBundle(以及 FOSUserB
我需要在 application.yml 中使用 yaml anchor 引用和字符串连接对于 Spring Boot 应用程序。动机是重用现有配置而不是复制它们。例如,我们有以下 applicati
我需要将单个 YML 文件拆分为多个 YML 文件: 微服务.yml: #------------------------------------------------------------- #
在我的 Symfony2 config.yml 文件中,我想导入一些我希望收集在单独的 yml 文件中的配置。 我用过: imports: - { resource: parameters.yml }
我是新的 docker 用户。在不同的手册中,我通常发现 docker-compose.yml 文件用于描述 docker 作业,但在 docker 站点上为此目标使用了 docker-stack.y
我不明白这两种在 Symfony2 中设置全局常量的方法之间的区别。是否只能在 config.yml (+configuration.php) 中设置默认值和类型? 最佳答案 参数.yml 文件是所有
在 config.yml 中,我看到了 monolog、web_profiler 等根元素。那些服务可以在 service.yml 中配置吗?换句话说,我在 service.yml 中定义的服务是否可
我阅读了这个文档:https://serverless.com/framework/docs/providers/google/guide/services/ users/ serverless.
我正在从事 CI/CD 项目(使用 circleci 管道),目前,我坚持让我的“create_infrastructure”工作正常工作。下面是作业 # AWS infrastructure
编辑:原始标题“文本环境:”平台“sqlite”不支持函数“year”” 将 beberlei\DoctrineExtensions 合并到测试环境中会产生 Uncaught PHP Exceptio
abc.yml: d_lab: 192.168.1.1 d_location: /ephemeral ema: apple: 10.0.0.1 orange: 10.0.0.2
我的 springboot 应用程序有一些 yml 文件(每个文件用于各种配置文件 - dev、prod)来加载配置。我正在将配置移至数据库。 示例配置如下: admin: id: user05
我有一个大型剧本,它使用多个角色来设置新服务器。我想重新使用剧本,但为了退役阶段而不是调用 role_name/tasks/main.yml 并有很多 when: 语句,我想要告诉 Ansible 调
使用 bookdown 创作文档时,我知道有四个选项可以放置配置选项: _bookdown.yml _output.yml 第一个 .Rmd 的 yaml header 文档 传递给 bookdown
我们希望将我们的 azure pipeline build .ymls 模块化。对于完整的应用程序构建,将包括不同组件的构建 .yml 到主 .yml 中,将它们全部构建在一起。对于单独的组件,我们将
假设我的网站上有一个简单的传统联系表单,我希望它在发送电子邮件时在开发环境中使用主题“Test: (subject_field value)”,在生产环境中使用“(subject_field_valu
我是一名优秀的程序员,十分优秀!