2011-12-27 6 views
3

私はRails 3.0.9を使用しています。 (ruby 1.9.3で) 私はいくつかの複製宝石(data_fabric、octopus、multi_db)を探しています。レール3.0.9に読み込みスレーブ(mySql)を実装するにはどうしたらいいですか?

最高の解決策は何か不思議に思っていました。 私はこの問題を見てまで、それはタコだと思った生産、準備が速い、AR3は、互換性のある...

https://github.com/tchandy/octopus/issues/60

私は私が必要とするすべてが送信する機能で、この時点でシャーディングを必要としません。スレーブに読み込み、マスターに書き込みます。

上記のニーズに最適なソリューションは何ですか?

+0

あなたがここに私の質問に答えることができますhttp://stackoverflow.com/questions/29445495/rails-how-to-split-write-read-query-across-master-slave-database ?noredirect = 1#comment47064893_29445495 –

答えて

1

この問題にもかかわらず、タコは依然として選ぶべきものです。あなたが記述するユースケースについてはSquareで使用します。

は依存関係が直接v0.4.0以降に行ってきましたリラックスしてコミットし、それはgitのリビジョンにロックしても安全です:

gem 'octopus', 
    :git => 'https://github.com/tchandy/octopus.git', 
    :ref => '7e585ecd35d3caf9b5d23a0265e709716740a3ce' 

関連のほとんどが3.1とスペックマスター表情でその他の変更に加え、単一のパフォーマンスコミット(私のコミット)、それはおそらくまた大丈夫です。

参考のために、AR 2.3を許可するようにv0.4.0のフォークを実行しています。さらに、パフォーマンスの関連するコミットがマスターになっています(トラフィックのヒープを実行していない場合は重要ではありません)。

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 
``` 
+0

ありがとうございます。 これを投稿して以来、私は実際にdata_fabricに行ってきましたが、あなたのメッセージの後に、タコがより良いと言うのは安全だと思いますが、それは良いから見えました、唯一の問題はそれが依存していたということです。 – KensoDev

+0

私はあなたに+10を与えるつもりです:-) – KensoDev

関連する問題