儘管存在這個問題,八爪魚仍然是一個挑選的人。我們在Square使用它來描述您使用的用例。
提交的放鬆依賴V0.4.0後直接進去了,所以它的安全鎖定到一個Git版本:3.1主要規格和相關的主看
gem 'octopus',
:git => 'https://github.com/tchandy/octopus.git',
:ref => '7e585ecd35d3caf9b5d23a0265e709716740a3ce'
其他的變化,再加上性能單一提交(我的提交),所以它可能也很好。
作爲參考,我們正在運行一個v0.4.0的分支,修正它以允許AR 2.3,以及現在掌握的與性能相關的提交(如果您沒有進行大量流量,但不錯,則不是關鍵)。
git diff v0.4.0..7e585ecd35d3caf9b5d23a0265e709716740a3ce
diff --git a/Gemfile b/Gemfile
index e82375d..c3bcf77 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,7 @@
source :rubygems
-gem 'activerecord', '3.0.6'
-gem 'actionpack', '3.0.6'
+gem 'activerecord', '~> 3.0'
+gem 'actionpack', '~> 3.0'
group :test do
gem "rake", ">= 0.8.7"
diff --git a/Gemfile.lock b/Gemfile.lock
index a80476c..a82c18f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -58,8 +58,8 @@ PLATFORMS
ruby
DEPENDENCIES
- actionpack (= 3.0.6)
- activerecord (= 3.0.6)
+ actionpack (~> 3.0)
+ activerecord (~> 3.0)
jeweler (>= 1.4)
mysql2
pg (>= 0.9.0)
diff --git a/ar-octopus.gemspec b/ar-octopus.gemspec
index 9e5f73e..2b06df4 100644
--- a/ar-octopus.gemspec
+++ b/ar-octopus.gemspec
@@ -171,8 +171,8 @@ Gem::Specification.new do |s|
s.specification_version = 3
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
- s.add_runtime_dependency(%q<activerecord>, ["= 3.0.6"])
- s.add_runtime_dependency(%q<actionpack>, ["= 3.0.6"])
+ s.add_runtime_dependency(%q<activerecord>, ["~> 3.0"])
+ s.add_runtime_dependency(%q<actionpack>, ["~> 3.0"])
s.add_development_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
s.add_development_dependency(%q<mysql2>, [">= 0"])
s.add_development_dependency(%q<pg>, [">= 0.9.0"])
@@ -181,8 +181,8 @@ Gem::Specification.new do |s|
s.add_development_dependency(%q<actionpack>, [">= 2.3"])
s.add_runtime_dependency(%q<activerecord>, [">= 2.3"])
else
- s.add_dependency(%q<activerecord>, ["= 3.0.6"])
- s.add_dependency(%q<actionpack>, ["= 3.0.6"])
+ s.add_dependency(%q<activerecord>, ["~> 3.0"])
+ s.add_dependency(%q<actionpack>, ["~> 3.0"])
s.add_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
s.add_dependency(%q<mysql2>, [">= 0"])
s.add_dependency(%q<pg>, [">= 0.9.0"])
@@ -192,8 +192,8 @@ Gem::Specification.new do |s|
s.add_dependency(%q<activerecord>, [">= 2.3"])
end
else
- s.add_dependency(%q<activerecord>, ["= 3.0.6"])
- s.add_dependency(%q<actionpack>, ["= 3.0.6"])
+ s.add_dependency(%q<activerecord>, ["~> 3.0"])
+ s.add_dependency(%q<actionpack>, ["~> 3.0"])
s.add_dependency(%q<rspec>, [">= 2.0.0.beta.19"])
s.add_dependency(%q<mysql2>, [">= 0"])
s.add_dependency(%q<pg>, [">= 0.9.0"])
diff --git a/lib/octopus/association_collection.rb b/lib/octopus/association_collection.rb
index 2dbff87..44d0f7a 100644
--- a/lib/octopus/association_collection.rb
+++ b/lib/octopus/association_collection.rb
@@ -12,4 +12,8 @@ module Octopus::AssociationCollection
end
end
-ActiveRecord::Associations::AssociationCollection.send(:include, Octopus::AssociationCollection)
\ No newline at end of file
+if ActiveRecord::VERSION::MAJOR >= 3 && ActiveRecord::VERSION::MINOR >=1
+ ActiveRecord::Associations::CollectionAssociation.send(:include, Octopus::AssociationCollection)
+else
+ ActiveRecord::Associations::AssociationCollection.send(:include, Octopus::AssociationCollection)
+end
diff --git a/lib/octopus/migration.rb b/lib/octopus/migration.rb
index 70bd8bd..7d9fd90 100644
--- a/lib/octopus/migration.rb
+++ b/lib/octopus/migration.rb
@@ -70,4 +70,8 @@ module Octopus::Migration
end
end
-ActiveRecord::Migration.extend(Octopus::Migration)
+if ActiveRecord::VERSION::MAJOR >= 3 && ActiveRecord::VERSION::MINOR >=1
+ ActiveRecord::Migration.send :include, Octopus::Migration
+else
+ ActiveRecord::Migration.extend(Octopus::Migration)
+end
```
你可以在這裏http://stackoverflow.com/questions/29445495/rails-how-to-split-write-read-query-across-master-slave-database回答我的問題?noredirect = 1#comment47064893_29445495 – 2015-04-11 06:04:29