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

23 views
Skip to first unread message

Ruby Freak

unread,
Jan 10, 2008, 1:08:43 AM1/10/08
to Ruby on Rails: Talk
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

Brian Szucs

unread,
Jan 11, 2008, 10:39:52 PM1/11/08
to rubyonra...@googlegroups.com
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
--
Posted via http://www.ruby-forum.com/.

Roger Pack

unread,
Jan 12, 2008, 5:48:38 PM1/12/08
to rubyonra...@googlegroups.com
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.

Walter McGinnis

unread,
Jan 13, 2008, 6:44:11 PM1/13/08
to rubyonra...@googlegroups.com
You might want to just change your code to work.  Do you have a "redefine_task" method by chance?


Cheers,
Walter McGinnis

Ruby Freak

unread,
Jan 14, 2008, 12:20:04 AM1/14/08
to Ruby on Rails: Talk
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" <walter.mcgin...@gmail.com>
wrote:
> 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 McGinnishttp://katipo.co.nz/
>
> On Jan 13, 2008 11:48 AM, Roger Pack <rails-mailing-l...@andreas-s.net>

Brian Szucs

unread,
Jan 16, 2008, 8:43:52 PM1/16/08
to rubyonra...@googlegroups.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.
Reply all
Reply to author
Forward
0 new messages