Today I dug deeper in the issue
by breaking down the goes method of Camping in small chunks and
evaluating them both in IR and MRI. I found that one thing expected by
Camping was the global constant TOPLEVEL_BINDING.
Apparently the constant was not defined in IR. A Google search found it
in:
ironruby/Merlin/Main/Languages/Ruby/Libs/hacks.rb
And when I explicitly required it, the constant appeared and Camping
worked immediately on IronRack.
Could someone explain what the constant is for and why it is located in
hacks.rb?
Is it ok to I be using hacks.rb?
Philippe
PS - I am pretty excited to run Camping now! I just had to make a
couple changes on top of IronRack to make it work.
Philippe Monnet wrote:
I have been leveraging
IronRack to try to get a sample Camping application up and running.
I seem to be able to require the camping library fine but then as try
to hit the famous "Camping.goes :Demo" line, IronRuby return an error
stating that the constant #<Class:Camping> is not initialized.
So I tried to do the same test using the IR command line executable,
but ran into the same issue (note that the same test works fine in
IRB). What is strange is that the camping framework is loaded and if I
query the constants in the Camping module I get back what I would
expect. Is this a module loading issue? How can I troubleshoot this
further?
Here is the IR's transcript:
---------------
>ir
IronRuby 0.9.0.0 on .NET 2.0.50727.3082
Copyright (c) Microsoft Corporation. All rights reserved.
>>> require 'rubygems'
=> true
>>> gem 'rack'
=> true
>>> require 'rack'
=> true
>>> gem 'camping'
=> true
>>> require 'camping'
=> ["Camping"]
>>> require 'demo'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:105:in
`const_missing': uninitialized constant
#<Class:Camping>::TOPLEVEL_BINDING (NameError)
from
C:/Ruby/lib/ruby/gems/1.8/gems/camping-1.5.180/lib/camping.rb:39:in
`goes'
from ./demo.rb:3
from :0
from :0:in `require'
from custom_require.rb:30:in `require'
from dependencies.rb:156:in `require'
from dependencies.rb:490:in `new_constants_in'
from dependencies.rb:154:in `require'
---------------
And the basic 'demo.rb' looks like the following:
require 'camping'
Camping.goes :Demo
module Demo
def Demo.create
end
end
module Demo::Models
end
module Demo::Controllers
class Index < R '/'
def get
render :index
end
end
end
module Demo::Views
def layout
html do
body do
self << yield
end
end
end
def index
h1 "#[email protected]},
Welcome to my IronCamping demo!"
end
end
_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core
|
_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core