Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CreateDefaultStock migration exception #5240

Closed
masterkain opened this issue Aug 20, 2014 · 7 comments
Closed

CreateDefaultStock migration exception #5240

masterkain opened this issue Aug 20, 2014 · 7 comments

Comments

@masterkain
Copy link
Contributor

using master, in stock_location.rb we can find this callback:

      def ensure_one_default
        if self.default

the migration:

# This migration comes from spree (originally 20130213191427)
class CreateDefaultStock < ActiveRecord::Migration
  def up
    Spree::StockLocation.skip_callback(:create, :after, :create_stock_items)
    Spree::StockItem.skip_callback(:save, :after, :process_backorders)
    location = Spree::StockLocation.new(name: 'default')
    location.save(validate: false)

this raises:

== 20140807212027 CreateDefaultStock: migrating ===============================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

undefined method `default' for #<Spree::StockLocation:0x007fa8ab8eecb0>/Users/kain/.rvm/gems/ruby-2.1.2/gems/activemodel-4.1.5/lib/active_model/attribute_methods.rb:435:in `method_missing'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/attribute_methods.rb:208:in `method_missing'
/Users/kain/.rvm/gems/ruby-2.1.2/bundler/gems/spree-1d4f25b893a0/core/app/models/spree/stock_location.rb:91:in `ensure_one_default'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:424:in `block in make_lambda'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:221:in `call'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:221:in `block in halting_and_conditional'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:86:in `call'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:86:in `run_callbacks'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/callbacks.rb:302:in `create_or_update'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/persistence.rb:103:in `save'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/validations.rb:51:in `save'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/attribute_methods/dirty.rb:21:in `save'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/transactions.rb:268:in `block (2 levels) in save'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/transactions.rb:329:in `block in with_transaction_returning_status'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/database_statements.rb:199:in `transaction'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/transactions.rb:208:in `transaction'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/transactions.rb:326:in `with_transaction_returning_status'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/transactions.rb:268:in `block in save'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/transactions.rb:283:in `rollback_active_record_state!'
/Users/kain/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/transactions.rb:267:in `save'
/Users/kain/Sites/mysite/db/migrate/20140807212027_create_default_stock.spree.rb:7:in `up'
@masterkain
Copy link
Contributor Author

copying the whole migrations from zero does not exhibit the issue though, closing.

@tomash
Copy link
Contributor

tomash commented Dec 19, 2014

Calling for reopening, the current master does not deploy nor migrate on a clean database.

Reason: 20141107184643_create_default_stock.spree.rb is a migration launched BEFORE 20141204150437_add_default_to_spree_stock_locations.spree.rb, whereas the latter creates StockLocation which, in line 7, does location.save(validate: false), which in turn calls if self.default (core/app/models/spree/stock_location.rb) which is an unknown field until add_default_to_spree_stock_locations is ran.

@tomash
Copy link
Contributor

tomash commented Dec 19, 2014

temporary workaround: added t.boolean :default, null: false, default: false to CreateSpreeStockLocations migration (couldn't add it as separate migration between CreateSpreeStockLocations and CreateDefaultStock since timestamp difference between them is 1)

@tomash
Copy link
Contributor

tomash commented Dec 19, 2014

This might be an upgrading issue, though. Even if it does not happen in a completely fresh Spree store, it shouldn't happen for someone upgrading from 2.4 to 3.0, so this should be fixed or at least mentioned in the guides.
@masterkain care to reopen the issue?

@masterkain masterkain reopened this Dec 22, 2014
@JDutil
Copy link
Member

JDutil commented Dec 23, 2014

This should already have been fixed:
5ca23cc

@JDutil JDutil closed this as completed Dec 23, 2014
@cgcmart
Copy link

cgcmart commented Jan 28, 2017

run rake db:migrate
Rake aborted. It looks new issues:
StandardError: An error has occurred, this and all later migrations canceled:

After save callback :process_backorders has not been defined
ArgumentError: After save callback :process_backorders has not been defined

`== 20161109013338 CreateDefaultStock: migrating ===============================
-- column_exists?(:spree_stock_locations, :default)
-> 0.0004s
-- add_column(:spree_stock_locations, :default, :boolean, {:null=>false, :default=>false})
-> 0.0004s
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

After save callback :process_backorders has not been defined
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:641:in block (2 levels) in skip_callback' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:637:in each'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:637:in block in skip_callback' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:568:in block in __update_callbacks'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:566:in reverse_each' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:566:in __update_callbacks'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:636:in skip_callback' /home/ypill/db/migrate/20161109013338_create_default_stock.spree.rb:10:in up'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:792:in exec_migration' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:773:in block (2 levels) in migrate'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:772:in block in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in with_connection'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:771:in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration/compatibility.rb:121:in migrate'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:951:in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1212:in block in execute_migration_in_transaction'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1280:in block in ddl_transaction' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in block in transaction'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:189:in within_new_transaction' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in transaction'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/transactions.rb:211:in transaction' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1280:in ddl_transaction'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1211:in execute_migration_in_transaction' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1184:in block in migrate_without_lock'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1183:in each' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1183:in migrate_without_lock'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1134:in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1006:in up'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:984:in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/tasks/database_tasks.rb:161:in migrate'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/railties/databases.rake:58:in block (2 levels) in <top (required)>' /usr/local/rvm/gems/ruby-2.3.0/gems/rake-12.0.0/exe/rake:27:in <top (required)>'
/usr/local/rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in eval' /usr/local/rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in

'
ArgumentError: After save callback :process_backorders has not been defined
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:641:in block (2 levels) in skip_callback' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:637:in each'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:637:in block in skip_callback' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:568:in block in __update_callbacks'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:566:in reverse_each' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:566:in __update_callbacks'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/callbacks.rb:636:in skip_callback' /home/ypill/db/migrate/20161109013338_create_default_stock.spree.rb:10:in up'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:792:in exec_migration' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:773:in block (2 levels) in migrate'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:772:in block in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in with_connection'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:771:in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration/compatibility.rb:121:in migrate'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:951:in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1212:in block in execute_migration_in_transaction'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1280:in block in ddl_transaction' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in block in transaction'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:189:in within_new_transaction' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in transaction'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/transactions.rb:211:in transaction' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1280:in ddl_transaction'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1211:in execute_migration_in_transaction' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1184:in block in migrate_without_lock'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1183:in each' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1183:in migrate_without_lock'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1134:in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:1006:in up'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:984:in migrate' /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/tasks/database_tasks.rb:161:in migrate'`

@deepakmahakale
Copy link
Contributor

deepakmahakale commented Jul 24, 2018

@99cm Open xxxxxx_create_default_stock.spree.rb and comment the following line

class CreateDefaultStock < ActiveRecord::Migration
  def up
    ....
    # Spree::StockItem.skip_callback(:save, :after, :process_backorders)
    ....
  end
 
  ....
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants