Oh no! I have a "Spec" model

I am trying to use cucumber but my application has a “Spec” model (I
followed the RailsSpace book). So now I am getting an error when
running cucumber (below). I think because cucumber does not like a
model named “Spec.” But I have “Spec” and “spec(s)” everywhere in my
application now. A universal text change is a huge pain. Some
innocent text contains the string “spec”, e.g. “aspect”. So I have to
look at each replacement. What can I do? Please help. Thanks.

Spec is not a class (TypeError)
/Volumes/Data/Beo/Documents/RailsSpace/app/models/spec.rb:1
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
gem_original_require' /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:inpolyglot_original_require’
/opt/local/lib/ruby/gems/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:in
require' /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/ active_support/dependencies.rb:158:inrequire’
/opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/dependencies.rb:265:in require_or_load' /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/ active_support/dependencies.rb:224:independ_on’
/opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/
active_support/dependencies.rb:136:in require_dependency' /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb: 414:inload_application_classes’
/opt/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:
413:in each' /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb: 413:inload_application_classes’
/opt/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:
411:in each' /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb: 411:inload_application_classes’
/opt/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:
197:in process' /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb: 113:insend’
/opt/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:
113:in run' /Volumes/Data/Beo/Documents/OptiDev/config/environment.rb:9 /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:ingem_original_require’
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
polyglot_original_require' /opt/local/lib/ruby/gems/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:inrequire’
/Volumes/Data/Beo/Documents/OptiDev/features/support/env.rb:8
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
gem_original_require' /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:inpolyglot_original_require’
/opt/local/lib/ruby/gems/1.8/gems/polyglot-0.2.9/lib/polyglot.rb:70:in
require' /opt/local/lib/ruby/gems/1.8/gems/cucumber-0.6.1/bin/../lib/cucumber/ rb_support/rb_language.rb:124:inload_code_file’
/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.6.1/bin/…/lib/cucumber/
step_mother.rb:84:in load_code_file' /opt/local/lib/ruby/gems/1.8/gems/cucumber-0.6.1/bin/../lib/cucumber/ step_mother.rb:76:inload_code_files’
/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.6.1/bin/…/lib/cucumber/
step_mother.rb:75:in each' /opt/local/lib/ruby/gems/1.8/gems/cucumber-0.6.1/bin/../lib/cucumber/ step_mother.rb:75:inload_code_files’
/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.6.1/bin/…/lib/cucumber/
cli/main.rb:48:in execute!' /opt/local/lib/ruby/gems/1.8/gems/cucumber-0.6.1/bin/../lib/cucumber/ cli/main.rb:20:inexecute’
/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.6.1/bin/cucumber:8
/opt/local/bin/cucumber:19:in `load’
/opt/local/bin/cucumber:19

On Jan 26, 6:51 pm, Vincent P [email protected] wrote:

I am trying to use cucumber but my application has a “Spec” model (I
followed the RailsSpace book).

…which is quite out of date.

So now I am getting an error when
running cucumber (below). I think because cucumber does not like a
model named “Spec.”

Actually, I think that would be more of a proble for RSpec. But I
could be wrong.

But I have “Spec” and “spec(s)” everywhere in my
application now. A universal text change is a huge pain. Some
innocent text contains the string “spec”, e.g. “aspect”. So I have to
look at each replacement.

Well, you should look at each replacement anyway.

What can I do? Please help.

Try a regular expression search and replace, so that you don’t hit
innocent words.

Thanks.

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Thanks. So the problem is the “Spec” model name? There is no other
way but to change “Spec” to something else?

I started with RailsSpace as a starting point a while back but my
application has evolved since.

Learn by Doing wrote:

Thanks. So the problem is the “Spec” model name?

Most likely.

There is no other
way but to change “Spec” to something else?

Probably not. And this should not be difficult.

I started with RailsSpace as a starting point a while back but my
application has evolved since.

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Learn by Doing wrote:

Thanks Marnen. I am trying to use regular expression to replace the
text “spec” in TextMate with “mug”. I am trying to avoid instances of
“spec” where it does not mean the name of the model, e.g. “aspect”.
So I use the following regular expression: [^a-zA-Z]spec . That
would catch “@spec” which is what I want. But if I tell TextMate to
replace that with “mug”, I lose the character before “spec”. TextMate
replaces “@spec” with “mug” . How can I make it replace @spec with
@mug ?

Most regexp syntaxes support backreferences in the replace string, which
is what you need. Check TextMate’s documentation to see how it
implements backreferences.

Thanks.

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Thanks Marnen!

I will surely look into back references next time. Before I got your
answer, I managed to do this manually by replacing “Spec” then “spec”
when
preceded with each of the special characters: @ : ’ " / - ! space. I
downloaded and used “Name Mangler” to replace “spec” in file names.
While
tedious, you are right that it is not too difficult. Cucumber seems to
work
now. I am ready to dive into BDD.

Thank you so much for your help.

Vincent

On Tue, Jan 26, 2010 at 11:07 PM, Marnen Laibow-Koser

Marnen!

Thank you so much for motivating me to use Cucumber. It makes
functional and integration testing so easy!

Vincent.

Learn by Doing wrote:

Marnen!

Thank you so much for motivating me to use Cucumber. It makes
functional and integration testing so easy!

You’re most welcome. It’s amazing, isn’t it?

Vincent.

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Thanks Marnen. I am trying to use regular expression to replace the
text “spec” in TextMate with “mug”. I am trying to avoid instances of
“spec” where it does not mean the name of the model, e.g. “aspect”.
So I use the following regular expression: [^a-zA-Z]spec . That
would catch “@spec” which is what I want. But if I tell TextMate to
replace that with “mug”, I lose the character before “spec”. TextMate
replaces “@spec” with “mug” . How can I make it replace @spec with
@mug ?

Thanks.