ruby-on-rails - 有没有办法从 config/deploy/ 获取具有角色的服务器列表.rb
问题描述
例如
我有一个文件 config/deploy/production.rb
server 'XXX.XXX.XXX.XXX', user: 'root', roles: %w{web app db}
server 'YYY.YYY.YYY.YYY', user: 'root', roles: %w{web app dbslave}
server 'ZZZ.ZZZ.ZZZ.ZZZ', user: 'root', roles: %w{web app dbslave}
...
我需要一个包含服务器及其角色的数组或哈希。
也许有一种方法可以重写配置文件来获取它?
解决方案
创建一个可以在整个应用程序中引用的服务对象:
首先,在你的 app 目录中创建一个 services 文件夹: /app/services
然后添加一个以该文件命名的服务对象,以便 Rails 自动加载它:
app/services/server_setter.rb
class ServerSetter
def initialize
if Rails.env.production?
@server_1 = {address: 'XXX.XXX.XXX.XXX', user: 'root', roles: [web app db]}
elsif Rails.env.development?
@server_1 = {address: 'XXX.XXX.XXX.XXX', user: 'root', roles: [web app dbslave]}
end
end
def get_info
@server_1
end
end
然后,您可以通过调用在您的应用程序或控制台中的任何位置检查或引用它ServerSetter.new
。例如,在 Rails 控制台中,您可以执行以下操作:
server_info = ServerSetter.new.get_info
推荐阅读
- sql-server - 使用 SimpleJdbcCall 优化 MSSQL 服务器中存储过程的执行
- python - 为什么 tf.train.import_meta_graph 非常非常慢?
- css - 删除移动视图上的 CSS 底部属性
- javascript - 如何在 btn-edit 上使用 cick 从 contentNote 中删除类显示并将类显示添加到 txtAreaNote?
- c# - SQL Server 2016 Microsoft.ReportViewer.WinForms.dll
- c# - OpenCV模板匹配结果为黑色
- java - 在 Android 上使用 ClipData 的 JavaSecurityException
- php - 使用 PHP 将大文件上传到谷歌云存储
- angularjs - 在 AngularJS 中渲染后运行代码
- react-native - 如何在 React Native 中对齐两个组件