Skip to content

Instantly share code, notes, and snippets.

@slbug
Created November 21, 2011 17:23
Show Gist options
  • Save slbug/1383302 to your computer and use it in GitHub Desktop.
Save slbug/1383302 to your computer and use it in GitHub Desktop.
Using the default profile...
Feature: Mount an Uploader on ActiveRecord class
In order to easily attach files to a form
As a web developer using CarrierWave
I want to mount an uploader on an ActiveRecord class
Background:
Given an uploader class that uses the 'file' storage
And an activerecord class that uses the 'users' table
And the uploader class is mounted on the 'avatar' column
And an instance of the activerecord class
Scenario: assign a file
When I assign the file 'fixtures/bork.txt' to the 'avatar' column
Then there should be a file called 'bork.txt' somewhere in a subdirectory of 'public/uploads/tmp'
And the file called 'bork.txt' in a subdirectory of 'public/uploads/tmp' should be identical to the file at 'fixtures/bork.txt'
Scenario: assign a file and save the record
When I assign the file 'fixtures/bork.txt' to the 'avatar' column
And I save the active record
Then there should be a file at 'public/uploads/bork.txt'
And the file at 'public/uploads/bork.txt' should be identical to the file at 'fixtures/bork.txt'
And the url for the column 'avatar' should be '/uploads/bork.txt'
Scenario: assign a file and retrieve it from cache
When I assign the file 'fixtures/bork.txt' to the 'avatar' column
And I retrieve the file later from the cache name for the column 'avatar'
And I save the active record
NoMethodError: undefined method `error' for nil:NilClass: INSERT INTO "users" ("avatar") VALUES (?) (ActiveRecord::StatementInvalid)
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:207:in `type_cast'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:240:in `block (2 levels) in exec_query'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:239:in `map'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:239:in `block in exec_query'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract_adapter.rb:244:in `block in log'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract_adapter.rb:239:in `log'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:223:in `exec_query'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:63:in `exec_insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:90:in `insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/query_cache.rb:14:in `insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/relation.rb:70:in `insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/persistence.rb:313:in `create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/timestamp.rb:51:in `create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:268:in `block in create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:390:in `_run_create_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:268:in `create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/persistence.rb:294:in `create_or_update'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:264:in `block in create_or_update'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:399:in `_run_save_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:264:in `create_or_update'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/persistence.rb:57:in `save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/validations.rb:56:in `save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/attribute_methods/dirty.rb:33:in `save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:246:in `block in save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:208:in `transaction'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:293:in `with_transaction_returning_status'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:246:in `save!'
~/work/.forks/cw1/features/step_definitions/activerecord_steps.rb:13:in `block in <top (required)>'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:48:in `instance_exec'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:48:in `block in cucumber_instance_exec'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:69:in `cucumber_run_with_backtrace_filtering'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:36:in `cucumber_instance_exec'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/rb_support/rb_step_definition.rb:62:in `invoke'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/step_match.rb:25:in `invoke'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_invocation.rb:59:in `invoke'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_invocation.rb:38:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:99:in `block in visit_step'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:98:in `visit_step'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_collection.rb:15:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_collection.rb:14:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_collection.rb:14:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:93:in `block in visit_steps'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:92:in `visit_steps'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:55:in `block (2 levels) in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:79:in `block (2 levels) in with_hooks'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:95:in `before_and_after'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:78:in `block in with_hooks'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:120:in `call'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:120:in `block (3 levels) in around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:13:in `block in around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:95:in `call'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:95:in `execute_around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:12:in `around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:119:in `block (2 levels) in around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:117:in `call'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:117:in `around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:90:in `around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:77:in `with_hooks'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:53:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:108:in `with_visitor'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:47:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:51:in `block in visit_feature_element'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:50:in `visit_feature_element'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/feature.rb:43:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/feature.rb:42:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/feature.rb:42:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:20:in `block in visit_feature'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:19:in `visit_feature'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:29:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:17:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:17:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:28:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:14:in `block in visit_features'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:13:in `visit_features'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:45:in `run!'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/cli/main.rb:43:in `execute!'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/cli/main.rb:20:in `execute'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/bin/cucumber:14:in `<top (required)>'
~/.rvm/gems/ruby-1.9.3-p0/bin/cucumber:19:in `load'
~/.rvm/gems/ruby-1.9.3-p0/bin/cucumber:19:in `<main>'
features/mount_activerecord.feature:27:in `And I save the active record'
Then there should be a file at 'public/uploads/bork.txt'
And the file at 'public/uploads/bork.txt' should be identical to the file at 'fixtures/bork.txt'
And the url for the column 'avatar' should be '/uploads/bork.txt'
Scenario: store a file and retrieve it later
When I assign the file 'fixtures/bork.txt' to the 'avatar' column
And I retrieve the file later from the cache name for the column 'avatar'
And I save the active record
NoMethodError: undefined method `error' for nil:NilClass: INSERT INTO "users" ("avatar") VALUES (?) (ActiveRecord::StatementInvalid)
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:207:in `type_cast'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:240:in `block (2 levels) in exec_query'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:239:in `map'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:239:in `block in exec_query'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract_adapter.rb:244:in `block in log'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract_adapter.rb:239:in `log'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:223:in `exec_query'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:63:in `exec_insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:90:in `insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/query_cache.rb:14:in `insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/relation.rb:70:in `insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/persistence.rb:313:in `create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/timestamp.rb:51:in `create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:268:in `block in create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:390:in `_run_create_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:268:in `create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/persistence.rb:294:in `create_or_update'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:264:in `block in create_or_update'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:399:in `_run_save_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:264:in `create_or_update'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/persistence.rb:57:in `save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/validations.rb:56:in `save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/attribute_methods/dirty.rb:33:in `save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:246:in `block in save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:208:in `transaction'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:293:in `with_transaction_returning_status'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:246:in `save!'
~/work/.forks/cw1/features/step_definitions/activerecord_steps.rb:13:in `block in <top (required)>'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:48:in `instance_exec'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:48:in `block in cucumber_instance_exec'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:69:in `cucumber_run_with_backtrace_filtering'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:36:in `cucumber_instance_exec'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/rb_support/rb_step_definition.rb:62:in `invoke'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/step_match.rb:25:in `invoke'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_invocation.rb:59:in `invoke'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_invocation.rb:38:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:99:in `block in visit_step'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:98:in `visit_step'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_collection.rb:15:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_collection.rb:14:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_collection.rb:14:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:93:in `block in visit_steps'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:92:in `visit_steps'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:55:in `block (2 levels) in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:79:in `block (2 levels) in with_hooks'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:95:in `before_and_after'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:78:in `block in with_hooks'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:120:in `call'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:120:in `block (3 levels) in around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:13:in `block in around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:95:in `call'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:95:in `execute_around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:12:in `around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:119:in `block (2 levels) in around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:117:in `call'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:117:in `around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:90:in `around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:77:in `with_hooks'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:53:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:108:in `with_visitor'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:47:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:51:in `block in visit_feature_element'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:50:in `visit_feature_element'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/feature.rb:43:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/feature.rb:42:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/feature.rb:42:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:20:in `block in visit_feature'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:19:in `visit_feature'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:29:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:17:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:17:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:28:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:14:in `block in visit_features'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:13:in `visit_features'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:45:in `run!'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/cli/main.rb:43:in `execute!'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/cli/main.rb:20:in `execute'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/bin/cucumber:14:in `<top (required)>'
~/.rvm/gems/ruby-1.9.3-p0/bin/cucumber:19:in `load'
~/.rvm/gems/ruby-1.9.3-p0/bin/cucumber:19:in `<main>'
features/mount_activerecord.feature:35:in `And I save the active record'
Then there should be a file at 'public/uploads/bork.txt'
When I reload the active record
Then the url for the column 'avatar' should be '/uploads/bork.txt'
Scenario: store a file and delete the record
When I assign the file 'fixtures/bork.txt' to the 'avatar' column
And I retrieve the file later from the cache name for the column 'avatar'
And I save the active record
NoMethodError: undefined method `error' for nil:NilClass: INSERT INTO "users" ("avatar") VALUES (?) (ActiveRecord::StatementInvalid)
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:207:in `type_cast'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:240:in `block (2 levels) in exec_query'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:239:in `map'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:239:in `block in exec_query'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract_adapter.rb:244:in `block in log'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract_adapter.rb:239:in `log'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/sqlite_adapter.rb:223:in `exec_query'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:63:in `exec_insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:90:in `insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/query_cache.rb:14:in `insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/relation.rb:70:in `insert'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/persistence.rb:313:in `create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/timestamp.rb:51:in `create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:268:in `block in create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:390:in `_run_create_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:268:in `create'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/persistence.rb:294:in `create_or_update'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:264:in `block in create_or_update'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:399:in `_run_save_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:81:in `run_callbacks'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/callbacks.rb:264:in `create_or_update'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/persistence.rb:57:in `save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/validations.rb:56:in `save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/attribute_methods/dirty.rb:33:in `save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:246:in `block in save!'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:208:in `transaction'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:293:in `with_transaction_returning_status'
~/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.1.1/lib/active_record/transactions.rb:246:in `save!'
~/work/.forks/cw1/features/step_definitions/activerecord_steps.rb:13:in `block in <top (required)>'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:48:in `instance_exec'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:48:in `block in cucumber_instance_exec'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:69:in `cucumber_run_with_backtrace_filtering'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/core_ext/instance_exec.rb:36:in `cucumber_instance_exec'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/rb_support/rb_step_definition.rb:62:in `invoke'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/step_match.rb:25:in `invoke'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_invocation.rb:59:in `invoke'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_invocation.rb:38:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:99:in `block in visit_step'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:98:in `visit_step'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_collection.rb:15:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_collection.rb:14:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/step_collection.rb:14:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:93:in `block in visit_steps'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:92:in `visit_steps'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:55:in `block (2 levels) in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:79:in `block (2 levels) in with_hooks'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:95:in `before_and_after'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:78:in `block in with_hooks'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:120:in `call'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:120:in `block (3 levels) in around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:13:in `block in around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:95:in `call'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:95:in `execute_around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/language_support/language_methods.rb:12:in `around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:119:in `block (2 levels) in around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:117:in `call'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime/support_code.rb:117:in `around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:90:in `around'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:77:in `with_hooks'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:53:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:108:in `with_visitor'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/scenario.rb:47:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:51:in `block in visit_feature_element'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:50:in `visit_feature_element'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/feature.rb:43:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/feature.rb:42:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/feature.rb:42:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:20:in `block in visit_feature'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:19:in `visit_feature'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:29:in `block in accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:17:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:17:in `each'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/features.rb:28:in `accept'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:14:in `block in visit_features'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:163:in `broadcast'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/ast/tree_walker.rb:13:in `visit_features'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/runtime.rb:45:in `run!'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/cli/main.rb:43:in `execute!'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/lib/cucumber/cli/main.rb:20:in `execute'
~/.rvm/gems/ruby-1.9.3-p0/gems/cucumber-1.1.2/bin/cucumber:14:in `<top (required)>'
~/.rvm/gems/ruby-1.9.3-p0/bin/cucumber:19:in `load'
~/.rvm/gems/ruby-1.9.3-p0/bin/cucumber:19:in `<main>'
features/mount_activerecord.feature:43:in `And I save the active record'
Then there should be a file at 'public/uploads/bork.txt'
When I delete the active record
Then there should not be a file at 'public/uploads/bork.txt'
Failing Scenarios:
cucumber features/mount_activerecord.feature:24
cucumber features/mount_activerecord.feature:32
cucumber features/mount_activerecord.feature:40
5 scenarios (3 failed, 2 passed)
46 steps (3 failed, 9 skipped, 34 passed)
0m0.368s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment