Projects: Issueshttp://projects.andriylesyuk.com/http://projects.andriylesyuk.com/plugin_assets/andriy_lesyuk/images/s-andy.ico2012-02-19T10:44:05ZProjects
Redmine WikiNG - Bug #1980 (Open): Problem running plugin in development modehttp://projects.andriylesyuk.com/issues/19802012-02-19T10:44:05ZOleg Kandaurov
<p>I am using redmine 1.3.0 with WikiNG 0.0.1b. It works well in production environment with following settings:<br /><pre>
config.cache_classes = true
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.action_mailer.raise_delivery_errors = false
config.action_mailer.logger = nil
</pre></p>
<p>But when I switch server to development environment it loads page successfully only once. I see following error:<br /><pre>
NameError in Projects#index
Showing app/views/layouts/base.html.erb where line #13 raised:
undefined local variable or method `heads_for_theme' for #<ActionView::Base:0xb6026ff0>
Extracted source (around line #13):
10: <%= stylesheet_link_tag 'application', :media => 'all' %>
11: <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %>
12: <%= javascript_heads %>
13: <%= heads_for_theme %>
14: <!--[if IE 6]>
15: <style type="text/css">
16: * html body{ width: expression( document.documentElement.clientWidth < 900 ? '900px' : '100%' ); }
</pre></p>
<pre>
/home/f0y/workspace-ruby/redmine-1.3.0/app/views/layouts/base.html.erb:13:in `_run_erb_app47views47layouts47base46html46erb'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_view/renderable.rb:34:in `send'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_view/renderable.rb:34:in `render'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_view/base.rb:306:in `with_template'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_view/renderable.rb:30:in `render'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_view/template.rb:205:in `render_template'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_view/base.rb:265:in `render'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_view/base.rb:352:in `_render_with_layout'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_view/base.rb:262:in `render'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/base.rb:1252:in `render_for_file'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/base.rb:936:in `render_without_benchmark'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in `render'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb:17:in `ms'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb:17:in `ms'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:51:in `render'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/base.rb:1328:in `default_render'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/base.rb:1334:in `perform_action_without_filters'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/filters.rb:617:in `call_filters'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb:17:in `ms'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb:17:in `ms'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/rescue.rb:160:in `perform_action_without_flash'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/flash.rb:151:in `perform_action'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/base.rb:532:in `send'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/base.rb:532:in `process_without_filters'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/filters.rb:606:in `process'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/base.rb:391:in `process'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/base.rb:386:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb:438:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:87:in `dispatch'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:121:in `_call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:130:in `build_middleware_stack'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activerecord/lib/active_record/query_cache.rb:29:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activerecord/lib/active_record/query_cache.rb:29:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activerecord/lib/active_record/query_cache.rb:9:in `cache'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activerecord/lib/active_record/query_cache.rb:28:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/string_coercion.rb:25:in `call'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/head.rb:9:in `call'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/methodoverride.rb:24:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/params_parser.rb:15:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb:99:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/failsafe.rb:26:in `call'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/lock.rb:11:in `call'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/lock.rb:11:in `synchronize'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/lock.rb:11:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:114:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/reloader.rb:34:in `run'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/actionpack/lib/action_controller/dispatcher.rb:108:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/railties/lib/rails/rack/static.rb:31:in `call'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/urlmap.rb:47:in `call'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/urlmap.rb:41:in `each'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/urlmap.rb:41:in `call'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/railties/lib/rails/rack/log_tailer.rb:17:in `call'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/content_length.rb:13:in `call'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/handler/webrick.rb:48:in `service'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/server.rb:162:in `start'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/server.rb:95:in `start'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/server.rb:92:in `each'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/server.rb:92:in `start'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/server.rb:23:in `start'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/webrick/server.rb:82:in `start'
/home/f0y/.rvm/gems/ruby-1.8.7-p358@redmine-debian/gems/rack-1.1.1/lib/rack/handler/webrick.rb:14:in `run'
/home/f0y/workspace-ruby/redmine-1.3.0/vendor/rails/railties/lib/commands/server.rb:111
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
/home/f0y/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
script/server:3
</pre>
<p>Configuration of development environment:<br /><pre>
config.cache_classes = false
config.whiny_nils = true
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.raise_delivery_errors = false
</pre></p>
<p>A reason of the error is caching but I’m not sure.</p> Orangutan::Redmine - Improvement #973 (Open): Issue description change notificationhttp://projects.andriylesyuk.com/issues/9732010-10-12T17:22:14ZAndriy Lesyuks-andy@andriylesyuk.com
<p>If one changes issue description no one will get notified about this! This is a Redmine bug. But Orangutan could find some way to “fix it” for his users...</p>
<p>As an option - try finding some “hook” in Redmine which would allow to catch description change... How to implement this is to be investigated.</p> Orangutan - Feature #941 (Open): Support Google calendarhttp://projects.andriylesyuk.com/issues/9412010-10-01T12:47:35ZAndriy Lesyuks-andy@andriylesyuk.com
<p>Orangutan can notify users about Google events (when they are added, in a hour before event etc).</p>
<p>For this there should be developed a special “monkey” - separate system process (maybe there are such programms already or programms which can be used?) which will notify Orangutan about events.</p>
<p>In addition a special context can ask users whether they are going to attend an event:</p>
<pre>
Orangutan: User user@host.com added an event "Company meeting" on Thu 15:00 - 16:00.
Orangutan: Are you going?
User: Maybe
Orangutan: Understood.
</pre>
<p>Also a mapping should be used to determine which user “owns” a Google email account used in calendar...</p> Orangutan - Improvement #936 (In Progress): Documentationhttp://projects.andriylesyuk.com/issues/9362010-09-30T12:33:25ZAndriy Lesyuks-andy@andriylesyuk.com
<p>Orangutan sources should include documentation...</p>
The documents which should be included:
<ul>
<li>Syntax description, usage</li>
<li>Context development tutorial</li>
<li>Installation (does not exist yet)</li>
</ul> Orangutan - Feature #935 (Open): Invalid keyboard layout translatorhttp://projects.andriylesyuk.com/issues/9352010-09-30T12:18:33ZAndriy Lesyuks-andy@andriylesyuk.com
<p>Sometimes when you chat you forget to switch keyboeard layout... and get unreadable text.</p>
<p>Orangutan could help here...</p>
<p>Check:</p>
<pre>
User: Translate: "ерші еуче ші шт утпдшір"
Orangutan: This means: "this text is in english"
User: Translate: "ye zr dfv nfrf sltqrf&"
Orangutan: This means: "ну як вам така ідейка?"
</pre> Orangutan - Improvement #918 (Open): Profiler/optimizationhttp://projects.andriylesyuk.com/issues/9182010-09-22T17:21:05ZAndriy Lesyuks-andy@andriylesyuk.com
<p>While currently Orangutan is fast enough it is always good idea to have a profiler for code optimization...</p>
<p>The profiler should be turned on to work (either dynamically through Evaluate/special context or by special configuration option). The work of the profiler is to... log. Logging can be done into debug.log file or similar.</p>
<p>The main goal is to detect places/contexts which take much time to operate...</p> Orangutan - Enhancement #910 (Open): Subjects or make Orangutan remember issue id, project etchttp://projects.andriylesyuk.com/issues/9102010-09-20T13:42:31ZAndriy Lesyuks-andy@andriylesyuk.com
<p>Many new contexts are coming... Most of them are related to issues.</p>
<p>Right now when we work with tasks we talk like this:<br /><pre>
User: Working
Orangutan: Ok...
User: Change activity to Development
Orangutan: Ok...
User: Started at 15:00
Orangutan: Ok...
</pre></p>
<p>That is we do not refer to the task... Orangutan “remembers” current task and does not require as to specify its ID or something like this...</p>
<p>With issues we have completely different situation - we need to specify ID each time!.. But why not?:</p>
<pre>
User: #203
Orangutan: Issue #203...
User: I like it!
Orangutan: Glad you do!
User: It's my main issue now
Orangutan: Ok...
</pre>
<p>You see? Orangutan can remember such things...</p>
<p>How to implement?</p>
<p>I see the following solution:</p>
<pre>
$user->SetTopic('issue', $issueid);
</pre>
<pre>
if (!defined($issueid)) {
$issueid = $user->GetTopic('issue');
}
</pre>
<p>That is I suggest to implement “topics” - internal variables which contain the topic of discussion... Of course many context should be modified to use/save topics... Topics should have time out (SetTopic should save current time).</p> Orangutan - Feature #892 (Open): Tip of the day / Did you know that?..http://projects.andriylesyuk.com/issues/8922010-09-08T14:16:53ZAndriy Lesyuks-andy@andriylesyuk.com
<p>While I hate things like this in other software... such context would be very helpful for new users. Of course there should be possibility to turn off this feature.</p>
<p>For this context new member should be added to Orangutan::Context object:</p>
<pre>
help => {
tips => [
'Tip #1...',
'Tip #2...',
]
}
</pre>
<p>Then when user comes online Orangutan randomly selects a tip and shows it to user...</p> Orangutan::Redmine - Enhancement #864 (Open): Custom issues list formathttp://projects.andriylesyuk.com/issues/8642010-08-31T14:10:42ZAndriy Lesyuks-andy@andriylesyuk.com
<p>The idea is to allow user to specify what should be printed when user requests to list issues...</p>
<p>For example, we on the project use custom field “Alt ID” containing project ID of issue. This is a very important field for us. And I would like to see it when issues are listed.</p>
<p>So the format should support native fields and custom fields. That is it should look like this (just an example):</p>
<pre>
User: List issues this way: "<tracker> #<id>: <subject> <upc id>"
</pre>
<p>The format options and syntax is to be defined...</p> Orangutan - Feature #863 (Open): Personal TODO listhttp://projects.andriylesyuk.com/issues/8632010-08-31T13:55:24ZAndriy Lesyuks-andy@andriylesyuk.com
<p>There was issue like this in the old version of Orangutan. After moving to Redmine I decided that Redmine’s issues can replace this...</p>
<p>Now I believe I was wrong...</p>
<p>Issues cannot replace TODO list. TODO list can contain a very short task or even not official personal task. For example, “Go and buy a mug”, “Talk with Mykola about his troubles and discipline” etc.</p>
<p>The TODO list should be sortable...</p> Orangutan - Improvement #862 (Open): Support user first and last name in requestshttp://projects.andriylesyuk.com/issues/8622010-08-31T13:43:42ZAndriy Lesyuks-andy@andriylesyuk.com
<p>Right now if you need to specidy user for some context you need to enter the username or Jabber ID... This is not very friendly...</p>
<p>The idea is to support queries like:</p>
<pre>
User: Assign to Andriy Lesyuk
User: Assign to Kostyantyn
User: Assign to Sergiy F.
User: Assign to Dmytriv
</pre>
<p>The algorithm should be smart enough to determine who is this user... For example, if user tells “Andriy” Orangutan should claim that there are many Andriy’s. If user tells “Kostyantyn” Orangutan should use Kostyantyn Kornienko because he is the only Kostyantyn etc.</p> Orangutan::Redmine - Enhancement #215 (Incomplete): Support issue subject as an answer to the iss...http://projects.andriylesyuk.com/issues/2152010-04-08T22:06:38ZAndriy Lesyuks-andy@andriylesyuk.com
<p>When Orangutan asks to enter issue some people think that they should enter issue subject. Therefore issue subject as an answer perhaps should be supported. This feature should be added to Issue and MainIssue contexts.</p> Orangutan - Improvement #192 (Open): SQL optimizationhttp://projects.andriylesyuk.com/issues/1922010-04-02T12:13:47ZAndriy Lesyuks-andy@andriylesyuk.com
<p>It should be researched how much SQL queries are done for a one request. There should be added some “profiler”... A code using SQL should be optimized to use minumal number of queries. Maybe also some “caching” should be added.</p> Orangutan - Feature #26 (Open): It would be greate to have a reminderhttp://projects.andriylesyuk.com/issues/262009-10-15T16:02:00ZAndriy Lesyuks-andy@andriylesyuk.com
<p>Saying you have something you must do before meeting. So it would be greate to create a reminder which would remind you to do this something. The reminder should, of course, support a date... Format can be something like: “Remind me to <do something> on Monday”. This is an optional feature request. Just an idea.</p> Orangutan::Redmine - Feature #20 (Open): Let user specify what he did during a breakhttp://projects.andriylesyuk.com/issues/202009-10-08T19:01:00ZAndriy Lesyuks-andy@andriylesyuk.com
<p>Saying I’m working on something and suddenly my manager asks me to attend a meeting. Saying the meeting lasts for an hour. When I get back Orangutan asks me if he should record a break. That’s fine! But it would be cool if I could answer something like: “Yes... I had a meeting with my manager.”. And he would add this as a task.</p>