Ruby on rails 一个应用程序但不同的yml文件
我有10个应用程序运行在同一个git标记上,这意味着除了config/database.yml(数据库设置中有更改)之外,应用程序端没有任何更改Ruby on rails 一个应用程序但不同的yml文件,ruby-on-rails,Ruby On Rails,我有10个应用程序运行在同一个git标记上,这意味着除了config/database.yml(数据库设置中有更改)之外,应用程序端没有任何更改 这会消耗服务器中的大量空间,并且我有可伸缩性问题。因此,是否可以克隆一个应用程序,并为同一应用程序的其余9个实例创建不同的yml文件。是否可以应用软链接方法进行此操作 如果我正确理解你的问题, 您的问题只是从同一个应用程序连接到不同的数据库,在这种情况下,您可以检查从一个主应用程序连接多个数据库的方法。读这个 Rails中有很多优点,让您也可以轻松地
这会消耗服务器中的大量空间,并且我有可伸缩性问题。因此,是否可以克隆一个应用程序,并为同一应用程序的其余9个实例创建不同的yml文件。是否可以应用软链接方法进行此操作 如果我正确理解你的问题, 您的问题只是从同一个应用程序连接到不同的数据库,在这种情况下,您可以检查从一个主应用程序连接多个数据库的方法。读这个 Rails中有很多优点,让您也可以轻松地完成这项工作。这里 这样,您只需要有一个database.yml文件,并为所有实例添加所需的数据库数量
希望有帮助 如果所有网站的应用程序逻辑相同,则路由也相同,并且只有几种不同的方法:
require 'domain'
constraints(Domain) do
match '/' => 'controller-1#action'
end
class Domain
def self.matches?(request)
request.domain.present? && request.domain == "www.domain-1.com"
end
end
关注点/域。rb:
require 'domain'
constraints(Domain) do
match '/' => 'controller-1#action'
end
class Domain
def self.matches?(request)
request.domain.present? && request.domain == "www.domain-1.com"
end
end
至于yml文件,您也可以将它们合并到一个应用程序中development-1.rb
(可以找到insideconfig/environments/)的3个副本,并将其重命名为development-2.rb
、development-3.rb
和development-4.rb
然后,只需在启动服务器之前运行以下步骤
RAILS_ENV=development rake db:create
//(OR just rake db:create as it defaults to development)
RAILS_ENV=development-2 rake db:create
RAILS_ENV=development-3 rake db:create
RAILS_ENV=development-4 rake db:create
然后,使用不同的服务器pid启动所有实例,如下所示 这将从同一个源和单个
database.yml
文件同时启动所有实例
您还可以像往常一样将连接详细信息放入database.yml中,并使用如下名称:
*记录数据库生产:
adapter: mysql
host: other_host
username: logmein
password: supersecret
database: logs
然后在您的特殊型号中:
require 'domain'
constraints(Domain) do
match '/' => 'controller-1#action'
end
class Domain
def self.matches?(request)
request.domain.present? && request.domain == "www.domain-1.com"
end
end
class AccessLog
防止那些讨厌的凭据出现在应用程序代码中。
如果希望在多个模型中重用此连接,则应创建一个新的抽象类并从中继承,因为连接与类紧密耦合(如此处、此处和此处所述),并且将为每个类创建新连接
如果是这样的话,设置如下:
require 'domain'
constraints(Domain) do
match '/' => 'controller-1#action'
end
class Domain
def self.matches?(request)
request.domain.present? && request.domain == "www.domain-1.com"
end
end
classlogdatabase
根据模型的标准Rails命名约定,在app_1/models文件夹中创建一个新文件,在本例中,该文件是一个名为a_table.rb的文件,因为它连接到一个名为a_table的表,然后以标准Rails模型格式设置类定义,如下所示
class ATable < ActiveRecord::Base
end
类ATableclass ATable < ActiveRecord::Base
establish_connection "foreign_#{Rails.env}"
end
类ATable您想对所有应用程序和不同的yml文件使用相同的应用程序代码。我说得对吗?@Ghostider:没错,指定不同的环境怎么样?您有一个带有一组YML文件的应用程序源。这些选项指定每个环境的设置。然后,您可以为特定的环境启动一个新的应用程序实例。此应用程序支持所需的YML文件。然后,您可以指定运行应用程序的自定义环境。默认情况下,Rails具有测试、开发和生产功能。您可以指定应用程序1、应用程序2等环境。这可能不是最好的解决方案,但确实有点道理。感谢您的回复。我知道从一个sing yml文件连接到不同的数据库,但是如何解决网站的域名问题呢。每个网站都有一个唯一的域名。这是在/etch/apache2/sites enabled中配置的