diff --git a/Gemfile b/Gemfile index 8c97131a..d49cdd29 100644 --- a/Gemfile +++ b/Gemfile @@ -1,41 +1,41 @@ -# Edit this Gemfile to bundle your application"s dependencies. -source "http://gemcutter.org" -source "http://gems.github.com" +# Edit this Gemfile to bundle your application's dependencies. +source 'http://gemcutter.org' +source 'http://gems.github.com' -gem "rails", "3.0.0.beta3" +gem 'rails', '3.0.0.beta3' -gem "liquid" -gem "bson_ext", ">= 1.0.1" -gem "mongo_ext" -gem "mongoid", "2.0.0.beta6" -gem "mongoid_acts_as_tree", ">= 0.1.2" -gem "mongo_session_store", "2.0.0.pre" -gem "warden" -gem "devise", "1.1.rc1" -gem "haml", "3.0.1" -gem "rmagick", "2.12.2" -gem "aws" -gem "jeweler" -gem "mimetype-fu", :require => "mimetype_fu" -gem "formtastic-rails3", :require => "formtastic" -gem "carrierwave-rails3", :require => "carrierwave" -gem "actionmailer-with-request", :require => 'actionmailer_with_request' -gem "heroku" +gem 'liquid' +gem 'bson_ext', '>= 1.0.1' +gem 'mongo_ext' +gem 'mongoid', '2.0.0.beta6' +gem 'mongoid_acts_as_tree', '>= 0.1.2' +gem 'mongo_session_store', '2.0.0.pre' +gem 'warden' +gem 'devise', '1.1.rc1' +gem 'haml', '3.0.1' +gem 'rmagick', '2.12.2' +gem 'aws' +gem 'jeweler' +gem 'mimetype-fu', :require => 'mimetype_fu' +gem 'formtastic-rails3', :require => 'formtastic' +gem 'carrierwave-rails3', :require => 'carrierwave' +gem 'actionmailer-with-request', :require => 'actionmailer_with_request' +gem 'heroku' # Development environment group :development do # Using mongrel instead of webrick (default server) - gem "mongrel" - gem "cgi_multipart_eof_fix" - gem "fastthread" - gem "mongrel_experimental" + gem 'mongrel' + gem 'cgi_multipart_eof_fix' + gem 'fastthread' + gem 'mongrel_experimental' end group :test do gem 'rspec-rails', '2.0.0.beta.11' gem 'factory_girl', :git => 'git://github.com/thoughtbot/factory_girl.git', :branch => 'rails3' - gem 'capybara' #, :git => 'git://github.com/jnicklas/capybara.git' - gem 'cucumber' #, '0.7.3' + gem 'capybara' + gem 'cucumber' gem 'cucumber-rails' gem 'spork' gem 'launchy' diff --git a/lib/locomotive.rb b/lib/locomotive.rb index 73d88dd4..c897733d 100644 --- a/lib/locomotive.rb +++ b/lib/locomotive.rb @@ -3,6 +3,7 @@ require 'locomotive/configuration' require 'locomotive/logger' require 'locomotive/liquid' require 'locomotive/mongoid' +require 'locomotive/carrierwave' require 'locomotive/heroku' require 'mongo_session_store/mongoid' diff --git a/lib/locomotive/carrierwave.rb b/lib/locomotive/carrierwave.rb new file mode 100644 index 00000000..78f71253 --- /dev/null +++ b/lib/locomotive/carrierwave.rb @@ -0,0 +1 @@ +require 'locomotive/carrierwave/patches' \ No newline at end of file diff --git a/config/initializers/carrierwave.rb b/lib/locomotive/carrierwave/patches.rb similarity index 100% rename from config/initializers/carrierwave.rb rename to lib/locomotive/carrierwave/patches.rb diff --git a/lib/locomotive/mongoid.rb b/lib/locomotive/mongoid.rb index 65ef9d20..8aa7ea01 100644 --- a/lib/locomotive/mongoid.rb +++ b/lib/locomotive/mongoid.rb @@ -1,2 +1,3 @@ require 'locomotive/mongoid/document' -require 'locomotive/mongoid/model_extensions' \ No newline at end of file +require 'locomotive/mongoid/model_extensions' +require 'locomotive/mongoid/patches' \ No newline at end of file diff --git a/config/initializers/mongoid.rb b/lib/locomotive/mongoid/patches.rb similarity index 65% rename from config/initializers/mongoid.rb rename to lib/locomotive/mongoid/patches.rb index 3b17b715..354ab56d 100644 --- a/config/initializers/mongoid.rb +++ b/lib/locomotive/mongoid/patches.rb @@ -30,6 +30,28 @@ module Mongoid #:nodoc: association.to_a.each { |doc| doc.save if doc.changed? || doc.new_record? } unless association.blank? end end + + class EmbedsMany < Proxy + + def nested_build(attributes, options = {}) + deleted_indexes = [] + attributes.each do |index, attrs| + if document = detect { |document| document._index == index.to_i } + if options && options[:allow_destroy] && attrs['_destroy'] + deleted_indexes << document._index + @target.delete(document) + document.destroy + else + document.write_attributes(attrs) + document._index = index.to_i - deleted_indexes.collect { |i| i < index.to_i }.size + end + else + build(attrs) + end + end + end + + end end # FIX BUG about accepts_nested_attributes_for @@ -41,4 +63,6 @@ module Mongoid #:nodoc: end end end + + end \ No newline at end of file diff --git a/lib/locomotive/patches.rb b/lib/locomotive/patches.rb deleted file mode 100644 index 70e447c2..00000000 --- a/lib/locomotive/patches.rb +++ /dev/null @@ -1 +0,0 @@ -# load patches here \ No newline at end of file diff --git a/spec/models/asset_collections_spec.rb b/spec/models/asset_collections_spec.rb index 3a87caad..e5c77790 100644 --- a/spec/models/asset_collections_spec.rb +++ b/spec/models/asset_collections_spec.rb @@ -15,6 +15,8 @@ describe AssetCollection do @collection = Factory.build(:asset_collection, :site => site) @collection.asset_custom_fields.build :label => 'My Description', :_alias => 'description', :kind => 'Text' @collection.asset_custom_fields.build :label => 'Active', :kind => 'Boolean' + # AssetCollection.collection.logger = Logger.new($stdout) + # AssetCollection.db.connection.instance_variable_set(:@logger, Logger.new($stdout)) end context 'unit' do @@ -156,10 +158,11 @@ describe AssetCollection do @collection.update_attributes(:asset_custom_fields_attributes => { '0' => { 'label' => 'My Description', 'kind' => 'Text', '_destroy' => "1" }, '1' => { 'label' => 'Active', 'kind' => 'Boolean', '_destroy' => "0" }, - '2' => { 'label' => 'My Title !', 'kind' => 'String' } + '2' => { 'label' => 'My Title !', 'kind' => 'String' }, + 'new_record' => { 'label' => 'Published at', 'kind' => 'String' } }) @collection = AssetCollection.first - @collection.asset_custom_fields.size.should == 1 + @collection.asset_custom_fields.size.should == 2 @collection.asset_custom_fields.first.label.should == 'My Title !' end