Undefined method `last' for {}:Hash rake db:migrate

I have tried everything I can think of to make this work for 3 days.
Thanks in advance.

Here is what I did:
rails 1.2.5 little_ones_bend
svn export
http://svn.subimage.com/source/substruct/site/trunk/vendor/plugins
vendor/plugins --username substruct --password substruct

svn export http://dev.rubyonrails.org/svn/rails/tags/rel_1-2-5 vendor/
rails
followed instructions from
http://dev.subimage.com/projects/substruct/wiki/InstallingSubstruct
ruby script/generate plugin_migration
rake db:migrate

As near as I can tell, the engine plugin is sending a Hash to the
function named “redefine_task”
which calls “resolve_args” and dies because Hash has no .last method
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1653:in
`resolve_args’

here it is. error on line 1653
def resolve_args(args)
task_name = args.shift
arg_names = args #.map { |a| a.to_sym }
needs = []
if task_name.is_a?(Hash)
hash = task_name
task_name = hash.keys[0]
needs = hash[task_name]
end
if arg_names.last.is_a?(Hash) # line 1653 error here
hash = arg_names.pop
needs = hash[:needs]
fail “Unrecognized keys in task hash: #{hash.keys.inspect}” if
hash.size > 1
end
needs = [needs] unless needs.respond_to?(:to_ary)
[task_name, arg_names, needs]
end

Here is the engine code that is calling redefine_task
Rake::Task.redefine_task(plugin => :environment) do
plugin_base = RAILS_ROOT + “/vendor/plugins/#{plugin}”
options = []
files = Rake::FileList.new
options << “-o doc/plugins/#{plugin}”
options << “–title ‘#{plugin.titlecase} Plugin
Documentation’”
options << ‘–line-numbers’ << ‘–inline-source’
options << ‘-T html’

C:\rails_projects\little_ones_bend>rake db:migrate --trace
(in C:/rails_projects/little_ones_bend)
rake aborted!
undefined method last' for {}:Hash C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1653:in resolve_args’
C:/rails_projects/little_ones_bend/config/…/vendor/plugins/engines/
tasks/engine
s.rake:9:in redefine_task' C:/rails_projects/little_ones_bend/config/../vendor/plugins/engines/ tasks/engine s.rake:24:in redefine_task’
C:/rails_projects/little_ones_bend/config/…/vendor/plugins/engines/
tasks/engine
s.rake:63
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1183:in each' C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1183:in send’
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1183:in each' C:/rails_projects/little_ones_bend/config/../vendor/plugins/engines/ tasks/engine s.rake:61 C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1737:in in_namespace’
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:821:in
namespace' C:/rails_projects/little_ones_bend/config/../vendor/plugins/engines/ tasks/engine s.rake:58 C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1737:in in_namespace’
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:821:in
namespace' C:/rails_projects/little_ones_bend/config/../vendor/plugins/engines/ tasks/engine s.rake:54 C:/rails_projects/little_ones_bend/vendor/rails/railties/lib/tasks/ rails.rb:8:in load’
C:/rails_projects/little_ones_bend/vendor/rails/railties/lib/tasks/
rails.rb:8
C:/rails_projects/little_ones_bend/vendor/rails/railties/lib/tasks/
rails.rb:8:in
each' C:/rails_projects/little_ones_bend/vendor/rails/railties/lib/tasks/ rails.rb:8 C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in gem_original_re
quire’
C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
require' C:/rails_projects/little_ones_bend/rakefile:10 C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:2149:in load’
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:2149:in
raw_load_rakefile ' C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1897:in load_rakefile’
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1948:in
standard_exceptio n_handling' C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1896:in load_rakefile’
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1880:in run' C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1948:in standard_exceptio
n_handling’
C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake.rb:1878:in run' C:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.1/bin/rake:31 C:/ruby/bin/rake:19:in load’
C:/ruby/bin/rake:19

Hi, I had this same problem. I am not sure of exactly what the internal
issue is but if you do a
sudo gem install -v=0.7.3 rake

and then

sudo gem uninstall rake and choose all the latest above it you should
work

Brian

Brian Szucs wrote:

Hi, I had this same problem. I am not sure of exactly what the internal
issue is but if you do a
sudo gem install -v=0.7.3 rake

and then

sudo gem uninstall rake and choose all the latest above it you should
work

Brian

If you can’t uninstall rake version 0.8.x (which seems to be causing the
problem), then run rake like
rake 0.7.3 [command_name] # for it to run the right version.
GL.

You might want to just change your code to work. Do you have a
“redefine_task” method by chance?
https://rubyforge.org/forum/forum.php?thread_id=20548&forum_id=20061

Cheers,
Walter McGinnis
http://katipo.co.nz/

On Jan 13, 2008 11:48 AM, Roger P. [email protected]

This is happening in an “out of the box” install of substruct, which
was developed in a prior version of ruby, rails, rake and engines. Now
it is broken.

Redefine_task is part of the engines plugin which us non-compatible
with rake above version 7.3
There is a Trac ticket to fix this.

What I really want to do is move substruct into 2.02 as a root app
rather than an plugin, but I was trying to do some mods to an existing
system that is running in the older environment. I just had a heck of
a time reverting everything back.
There is version 2.0 of engines, but I think it needs rails 2.0 and I
froze at 1.2.5

Thanks

TW

On Jan 13, 3:44 pm, “Walter McGinnis” [email protected]
wrote:

Brian

If you can’t uninstall rake version 0.8.x (which seems to be causing the
problem), then run rake like
rake 0.7.3 [command_name] # for it to run the right version.
GL.

Posted viahttp://www.ruby-forum.com/.

I am not using engines or substruct so this must exist in another place.
I will look around for it but substruct/enginess is not the only reason
this is happening.