Defect #11298
closedIssue API may not work on Ruby 1.9 in Redmine 1.4
0%
Description
When you query the issue api in redmine running on Rails 1.9.3 it produces the following error:
Processing IssuesController#index to xml (for 127.0.0.1 at 2012-07-01 20:16:47) [GET]
  Parameters: {"key"=>"xxxxxxx", "fields"=>["status_id"], "operators"=>{"status_id"=>"o"}, "values"=>{"status_id"=>["1"]}, "per_page"=>"10", "controller"=>"issues", "action"=>"index", "project
_id"=>"pycroft", "format"=>"xml"}
Rendering issues/index
ActionView::TemplateError (uninitialized constant Redmine::Views::Builders::Xml::Time) on line #1 of app/views/issues/index.api.rsb:
1: require 'time'
2: logger.fatal(api)
3: api.array :issues, api_meta(:total_count => @issue_count, :offset => @offset, :limit => @limit) do
4:   @issues.each do |issue|
    /usr/lib/ruby/vendor_ruby/active_support/dependencies.rb:131:in `rescue in const_missing'
    /usr/lib/ruby/vendor_ruby/active_support/dependencies.rb:120:in `const_missing'
    lib/redmine/views/builders/xml.rb:25:in `<class:Xml>'
    lib/redmine/views/builders/xml.rb:23:in `<module:Builders>'
    lib/redmine/views/builders/xml.rb:22:in `<module:Views>'
    lib/redmine/views/builders/xml.rb:21:in `<module:Redmine>'
    lib/redmine/views/builders/xml.rb:20:in `<top (required)>'
    /usr/lib/ruby/vendor_ruby/active_support/dependencies.rb:184:in `require'
    /usr/lib/ruby/vendor_ruby/active_support/dependencies.rb:184:in `require'
    /usr/lib/ruby/vendor_ruby/active_support/dependencies.rb:291:in `require_or_load'
    /usr/lib/ruby/vendor_ruby/active_support/dependencies.rb:451:in `load_missing_constant'
    /usr/lib/ruby/vendor_ruby/active_support/dependencies.rb:106:in `const_missing_with_dependencies'
    lib/redmine/views/builders.rb:23:in `for'
    app/views/issues/index.api.rsb:1:in `_run_rsb_app47views47issues47index46api46rsb'
    /usr/lib/ruby/vendor_ruby/action_view/renderable.rb:34:in `block in render'
    /usr/lib/ruby/vendor_ruby/action_view/base.rb:306:in `with_template'
    /usr/lib/ruby/vendor_ruby/action_view/renderable.rb:30:in `render'
    /usr/lib/ruby/vendor_ruby/action_view/template.rb:205:in `render_template'
    /usr/lib/ruby/vendor_ruby/action_view/base.rb:265:in `render'
    /usr/lib/ruby/vendor_ruby/action_controller/base.rb:1252:in `render_for_file'
    /usr/lib/ruby/vendor_ruby/action_controller/base.rb:936:in `render'
    /usr/lib/ruby/vendor_ruby/action_controller/benchmarking.rb:51:in `block in render_with_benchmark'
    /usr/lib/ruby/vendor_ruby/action_controller/benchmarking.rb:51:in `render_with_benchmark'
    /usr/lib/ruby/vendor_ruby/action_controller/base.rb:1328:in `default_render'
    /usr/lib/ruby/vendor_ruby/action_controller/base.rb:1334:in `perform_action'
    /usr/lib/ruby/vendor_ruby/action_controller/filters.rb:617:in `call_filters'
    /usr/lib/ruby/vendor_ruby/action_controller/filters.rb:610:in `perform_action_with_filters'
    /usr/lib/ruby/vendor_ruby/action_controller/benchmarking.rb:68:in `block in perform_action_with_benchmark'
    /usr/lib/ruby/vendor_ruby/action_controller/benchmarking.rb:68:in `perform_action_with_benchmark'
    /usr/lib/ruby/vendor_ruby/action_controller/rescue.rb:160:in `perform_action_with_rescue'
    /usr/lib/ruby/vendor_ruby/action_controller/flash.rb:151:in `perform_action_with_flash'
    /usr/lib/ruby/vendor_ruby/action_controller/base.rb:532:in `process'
    /usr/lib/ruby/vendor_ruby/action_controller/filters.rb:606:in `process_with_filters'
    /usr/lib/ruby/vendor_ruby/action_controller/base.rb:391:in `process'
    /usr/lib/ruby/vendor_ruby/action_controller/base.rb:386:in `call'
    /usr/lib/ruby/vendor_ruby/action_controller/routing/route_set.rb:438:in `call'
    /usr/lib/ruby/vendor_ruby/action_controller/dispatcher.rb:87:in `dispatch'
    /usr/lib/ruby/vendor_ruby/action_controller/dispatcher.rb:121:in `_call'
    /usr/lib/ruby/vendor_ruby/action_controller/dispatcher.rb:130:in `block in build_middleware_stack'
    /usr/lib/ruby/vendor_ruby/active_record/query_cache.rb:29:in `call'
    /usr/lib/ruby/vendor_ruby/active_record/query_cache.rb:29:in `block in call'
    /usr/lib/ruby/vendor_ruby/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
    /usr/lib/ruby/vendor_ruby/active_record/query_cache.rb:9:in `cache'
    /usr/lib/ruby/vendor_ruby/active_record/query_cache.rb:28:in `call'
    /usr/lib/ruby/vendor_ruby/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
    /usr/lib/ruby/vendor_ruby/action_controller/string_coercion.rb:25:in `call'
    /usr/lib/ruby/vendor_ruby/rack/head.rb:9:in `call'
    /usr/lib/ruby/vendor_ruby/rack/methodoverride.rb:21:in `call'
    /usr/lib/ruby/vendor_ruby/action_controller/params_parser.rb:15:in `call'
    /usr/lib/ruby/vendor_ruby/action_controller/session/cookie_store.rb:99:in `call'
    /usr/lib/ruby/vendor_ruby/action_controller/failsafe.rb:26:in `call'
    /usr/lib/ruby/vendor_ruby/rack/lock.rb:15:in `call'
    /usr/lib/ruby/vendor_ruby/action_controller/dispatcher.rb:106:in `call'
    /usr/lib/ruby/vendor_ruby/rack/handler/fastcgi.rb:66:in `serve'
    public/dispatch.fcgi:24:in `<main>'
Rendering rescues/layout (internal_server_error)
	That results in an 500 internal server error and makes the api useless. You need to prefix The Time class in http://www.redmine.org/projects/redmine/repository/entry/branches/1.4-stable/lib/redmine/views/builders/xml.rb#L32 with :: to tell ruby you mean the Time class from the global Namespace! Otherwise ruby thinks is is a constant in the current namespace.
You do this already in the 2.0 branch like you can see in http://www.redmine.org/projects/redmine/repository/entry/branches/2.0-stable/lib/redmine/views/builders/xml.rb#L34. Please fix this also in 1.4 or do not tell us that 1.4 also works with 1.9.3.
       Updated by Jan Losinski over 13 years ago
      Updated by Jan Losinski over 13 years ago
      
    
    Jan Losinski wrote:
When you query the issue api in redmine running on Rails 1.9.3 it produces the following
ruby 1.9.3 ...
       Updated by Jean-Philippe Lang over 13 years ago
      Updated by Jean-Philippe Lang over 13 years ago
      
    
    - Target version set to 1.4.5
It seems to happen under certain circumstances only because tests are OK with Redmine 1.4.4 and ruby1.9.3:
http://www.redmine.org/builds/index.html
The change you mention was required when upgrading to Rails 3.2 (r9528).
       Updated by Jean-Philippe Lang over 13 years ago
      Updated by Jean-Philippe Lang over 13 years ago
      
    
    What is your exact Redmine version BTW?
       Updated by Jan Losinski over 13 years ago
      Updated by Jan Losinski over 13 years ago
      
    
    Jean-Philippe Lang wrote:
What is your exact Redmine version BTW?
The "information" in the admin section tells 1.4.4.stable. I installed it from Debian Testing.
ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
       Updated by Jean-Philippe Lang about 13 years ago
      Updated by Jean-Philippe Lang about 13 years ago
      
    
    - Subject changed from Issue API not working on Ruby 1.9 in Redmine 1.4 to Issue API may not work on Ruby 1.9 in Redmine 1.4
- Status changed from New to Closed
- Assignee set to Jean-Philippe Lang
- Resolution set to Fixed
Change committed in r10299.