我正在尝试将Ruby Sequel::Model
ORM功能用于Web服务,其中每个用户的数据都存储在一个单独的MySQL数据库中.可能有数千个用户,因此可能有数据库.
在每个Web请求中,我想构建连接字符串以连接到用户的数据,执行工作,然后关闭连接.
使用Sequel时,我可以指定用于特定代码块的数据库:
Sequel.connect(:adapter=>'mysql', :host=>'localhost', database=>'test1') do |db|
db.do_something()
end
Run Code Online (Sandbox Code Playgroud)
这一切都很好,我可以在特定用户的数据库上执行Sequel操作.但是,在使用时Sequel::Model
,当我来做我的数据库操作时,它看起来像这样:
Supplier.create(:field1 => 'TEST')
Run Code Online (Sandbox Code Playgroud)
即它不db
作为参数,所以只使用一些共享数据库配置.
我可以用两种方式配置数据库模型,设置全局DB
变量:
DB = Sequel.connect(:adapter=>'mysql', :host=>'localhost', database=>'test1')
class Supplier < Sequel::Model
end
Run Code Online (Sandbox Code Playgroud)
或者,我可以为模型设置数据库:
Sequel::Model.db = Sequel.connect(:adapter=>'mysql', :host=>'localhost', database=>'test1')
class Supplier < Sequel::Model
end
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,设置这样的共享变量都是不对的 - 可能会同时处理多个请求,每个请求都需要自己的数据库配置.
有没有办法解决?有没有办法使用Sequel::Model
?指定每个请求数据库配置?
顺便说一下,我遇到了与DataMapper类似的问题,我现在想知道如果使用Ruby,是否只有一个多租户数据库是唯一的选择,尽管我更愿意避免这种情况,因为它限制可扩展性.
非常感谢解决方案或任何相关讨论.
谢谢皮特
我正在使用Visual Studio Online从Team Services(以前是Visual Studio Online)的git存储库构建Visual Studio解决方案。该构建在向Team Services注册并发布到Team Services的本地构建代理上进行。
在构建定义的“存储库”设置中,将“标签源”设置为“成功构建”,并指定了“标签格式”。
构建日志显示版本已标记:
Created ref refs/tags/BuildName - SolutionName - Release_1.2.16134.03 at c1fa2a4b9e0f3365e2269bb947af7819faf40354.
Run Code Online (Sandbox Code Playgroud)
在构建的“工件”选项卡上,它显示“ build.sourceLabel”,并具有指向以下内容的超链接:
refs/tags/BuildName - SolutionName ...
Run Code Online (Sandbox Code Playgroud)
但是,当我单击超链接时,出现了TFS错误:
TF401175:The version descriptor <Tag: BuildName - SolutionName - Release_1.2.16134.03 > could not be resolved to a version in the repository RepositoryName
Run Code Online (Sandbox Code Playgroud)
我也无法在本地git存储库中找到任何标签:
git pull --tags
git tag
Run Code Online (Sandbox Code Playgroud)
什么也没显示。
我是否需要任何其他步骤将源标签从构建代理推送到Team Services?该链接上的最高答案似乎表明我所做的事情是正确的(但是我没有使用托管池)。
我的存储库设置如下所示:
有没有其他人有这个问题?有什么建议么?
提前致谢。