Scott & Colin ~
Perhaps this conversation has reached the end of its useful life. But
in
case there still is anything left to be learned, let me respond to a
couple
of your comments.
“Why on earth would you keep re-generating scaffolds over and over???”
[Scott]
Because generators, when they work, are easier and more reliable than
manually updating code. Rails obviously has a powerful set of
generators
for jump-starting development. That’s one big reason why I’m spending
all
this time evaluating it (vs other platforms like Django). This whole
thread
is trying to understand the powers and limits of the Rails generators,
specifically in the somewhat-Rails-nonstandard scenario where the DB
schema
exists independently of the Rails app, so the requirement is to tailor
(and
re-tailor) the Rails objects to fit the DB schema, with as much
automagic
support as possible. Of course, the job of generators rapidly becomes
harder when you ask them to update objects that have been modified
manually
since they were originally generated. But some generators can go
farther
into update-land than others, and I’m trying to understand where Rails
is
on this dimension.
“The only thing you have to do now is to add the new field to the
view. Everything else is handled automatically. All you are
achieving by running the generator is adding that field to the view.”
Not so, from my experiments. Running “rake db:schema:dump” added the
field
to schema.rb, and the output from *scaffold *indicates that it edited a
total of 8 different files for me, namely:
conflict test/fixtures/toys.yml
force test/fixtures/toys.yml
conflict app/controllers/toys_controller.rb
force app/controllers/toys_controller.rb
conflict app/views/toys/index.html.erb
force app/views/toys/index.html.erb
conflict app/views/toys/show.html.erb
force app/views/toys/show.html.erb
conflict app/views/toys/_form.html.erb
force app/views/toys/_form.html.erb
conflict test/controllers/toys_controller_test.rb
force test/controllers/toys_controller_test.rb
conflict app/views/toys/index.json.jbuilder
force app/views/toys/index.json.jbuilder
conflict app/views/toys/show.json.jbuilder
force app/views/toys/show.json.jbuilder
Not only did the generator update all these files for me, but it
actually *knew
*which files had to be updated so that my app could handle the new
database
column - another huge advantage for a newbie like me, who would
otherwise
have to spend hours figuring that out.
Were not all of these 9 edits necessary to weave the new database column
into my app?
So, what’s the best approach: Run 3 simple console commands, or
manually
locate and edit 9 files (and debug the edits)?
I guess I see a lot more value in the Rails generators than you guys do.
And I’m still looking to see if they have still further powers
(especially
in update-land) that I haven’t discovered yet.