I am new to testing and Rspec. I have one rails project created on my
machine.
In this project under \app\models i have a file called “client.rb” which
has been already created. Now i want to generate spec file for this
model for which i am using command:
ruby script/generate rspec_model Client
Now with this command along with spec file, a file called “client.rb”
will also be generated under \app\models. But in my case since the file
“client.rb” is already present,with above command i am getting following
message:
ruby script/generate rspec_model Client
The name ‘Client’ is either already used in your application or reserved
by Ru
by on Rails.
Please choose an alternative and run this generator again.
Suggestions:
customer
node
guest
Platform and Version details:
Windows xp-professional
Ruby 1.8.6
Rails 2.3.2
Gem 1.3.1
I have also attached console snapshot for same.
I haven’t found any help related to this.Ideally in such cases it should
ask for the message regarding "whether you want to overwrite file
client.rb ? "
So can anybody please help me out regarding this issue. whether this is
related to version problem or what else earliest?
No, above command does not give me same error. However it creates only
the model file under \app\models and asks whether to overwrite it. But
my aim is to create rspec file under \spec\models with the actual model
file created under \app\models remaining unchanged. So using the rails
generator does not meet my objective and i have to use rspec generator
to meet the requirement.
Ideal schenario should be that rspec generator creates the desired rspec
file under \spec\models and while creating actual model file under
\app\models it should ask for whether to overwrite it. I am not getting
this schenario may be because i am missing something.It would be really
helpful if you could help me out in this.
No, above command does not give me same error. However it creates only
the model file under \app\models and asks whether to overwrite it. But
my aim is to create rspec file under \spec\models with the actual model
file created under \app\models remaining unchanged. So using the rails
generator does not meet my objective and i have to use rspec generator
to meet the requirement.
I wasn’t trying to meet your requirement with this - just trying to
narrow down the problem.
Ideal schenario should be that rspec generator creates the desired rspec
file under \spec\models and while creating actual model file under
\app\models it should ask for whether to overwrite it. I am not getting
this schenario may be because i am missing something.It would be really
helpful if you could help me out in this.
The rails code that triggers this will always raise this error if the
Client constant (in your case) is already defined. This normally
doesn’t conflict with files in your app because they are not loaded
when you run generators. So it seems that something other than
app/models/client.rb is getting loaded that defines the Client
constant (either a class or a module).
Do you have any plugins that define a Client? Or perhaps you’ve got
some extension in the lib directory?
I think this problem is not related any plugin (that define a client)
simply because if i try it with any other ruby file(other than
Client.rb) also i am facing same problem.And what do you mean by some
extension in the lib directory?
No, above command does not give me same error. However it creates only
the model file under \app\models and asks whether to overwrite it. But
my aim is to create rspec file under \spec\models with the actual model
file created under \app\models remaining unchanged. So using the rails
generator does not meet my objective and i have to use rspec generator
to meet the requirement.
I wasn’t trying to meet your requirement with this - just trying to
narrow down the problem.
Ideal schenario should be that rspec generator creates the desired rspec
file under \spec\models and while creating actual model file under
\app\models it should ask for whether to overwrite it. I am not getting
this schenario may be because i am missing something.It would be really
helpful if you could help me out in this.
The rails code that triggers this will always raise this error if the
Client constant (in your case) is already defined. This normally
doesn’t conflict with files in your app because they are not loaded
when you run generators. So it seems that something other than
app/models/client.rb is getting loaded that defines the Client
constant (either a class or a module).
Do you have any plugins that define a Client? Or perhaps you’ve got
some extension in the lib directory?
I think this problem is not related any plugin (that define a client)
simply because if i try it with any other ruby file(other than
Client.rb) also i am facing same problem.
So if you do this:
rails widgets
cd widgets
script\generate model widget
script\generate rspec
script\generate rspec_model widget
The last command tells you that Widget is already defined?
And what do you mean by some extension in the lib directory?
I mean that you have a file in the lib directory in your Rails project
that defines a client. I believe that loading the rails env (which
happens when you run script\generate) loads the lib directory, so if
you have a file in there that defines Client, then you’d run into this
problem.
I am so sorry for not being replying for so long.I was busy working with
some other things and kept aside RSPEC. Above command does not gave me
any problem for “widgets” and model with name “widget” was created. But
in my project i am still getting the same problem as mentioned earlier.
I think this problem is not related any plugin (that define a client)
simply because if i try it with any other ruby file(other than
Client.rb) also i am facing same problem.
So if you do this:
rails widgets
cd widgets
script\generate model widget
script\generate rspec
script\generate rspec_model widget
The last command tells you that Widget is already defined?
And what do you mean by some extension in the lib directory?
I mean that you have a file in the lib directory in your Rails project
that defines a client. I believe that loading the rails env (which
happens when you run script\generate) loads the lib directory, so if
you have a file in there that defines Client, then you’d run into this
problem.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.