Redmine Arch Decisions plugin (for tracking technical decisions)

Added by Timothy High almost 10 years ago

I'd like to announce a plugin I've been working on for tracking technical decisions ("Arch Decisions", from "architecture decisions"). The plugin adds its own tabs to the project for Arch Decisions (or "ADs"), plus one for Factors, which are requirements, facts, or anything else that might influence the outcome of the decision (there's a status for them, too, so if they turn out to be wrong, they can be rejected). The ADs also track Strategies (which are potential solutions), and users can comment on any of these types. With this latest version, ADs can also be (somewhat crudely) linked to Issues.

See my blog post on the subject for a little more complete description of the tool: http://timhigh.wordpress.com/2010/02/23/announcing-the-arch-decisions-plugin-for-redmine/

The tool can be downloaded from Github: http://github.com/bigokro/redmine_arch_decisions
Issue tracker: http://opensource.integritas.com.br/projects/redmine-ad/issues

One word of warning: I've only tested it with Redmine 8.4, and have already heard that it's not yet working with 9.x. If anyone wants to pitch in, I'd be more than grateful! Otherwise, it's next on my list.

Arch_Decisions.png - Index listing of Arch Decisions (46.8 KB)

Replies (47)

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Patrick van der Velde over 9 years ago

Alright I finally had time to try this. I moved both graphs and redmine-hudson out of the plugin directory and ran the rake rad:db:migrate command. Still no dice. The output is:

E:\webservers\railsapps\redmine>rake rad:db:migrate --trace
(in E:/webservers/railsapps/redmine)
  • Invoke rad:db:migrate (first_time)
  • Invoke environment (first_time)
  • Execute environment
    rake aborted!
    Object is not missing constant Project!
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:417:in `load_missing_constant'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in `const_missing'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:92:in `const_missing'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:98:in `send'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:98:in `const_missing'
    E:/webservers/railsapps/redmine/app/models/attachment.rb:36
    d:/dev/lang/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    d:/dev/lang/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:158:in `require'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:265:in `require_or_load'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:425:in `load_missing_constant'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in `const_missing'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:92:in `const_missing'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:437:in `load_missing_constant'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in `const_missing'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:437:in `load_missing_constant'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in `const_missing'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:437:in `load_missing_constant'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in `const_missing'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:437:in `load_missing_constant'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in `const_missing'
    E:/webservers/railsapps/redmine/vendor/plugins/acts_as_attachable/lib/acts_as_attachable.rb:33:in `acts_as_attachable'
    E:/webservers/railsapps/redmine/app/models/issue.rb:35
    d:/dev/lang/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    d:/dev/lang/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:158:in `require'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:265:in `require_or_load'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:224:in `depend_on'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:136:in `require_dependency'
    E:/webservers/railsapps/redmine/vendor/plugins/arch_decisions/lib/arch_decisions_issue_patch.rb:1
    d:/dev/lang/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    d:/dev/lang/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:158:in `require'
    E:/webservers/railsapps/redmine/vendor/plugins/arch_decisions/init.rb:3:in `evaluate_init_rb'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/rails/plugin.rb:158:in `evaluate_init_rb'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:11:in `silence_warnings'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/rails/plugin.rb:154:in `evaluate_init_rb'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/rails/plugin.rb:48:in `load'
    E:/webservers/railsapps/redmine/config/../vendor/plugins/engines/lib/engines/plugin.rb:44:in `load'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/rails/plugin/loader.rb:38:in `load_plugins'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/rails/plugin/loader.rb:37:in `each'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/rails/plugin/loader.rb:37:in `load_plugins'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/initializer.rb:369:in `load_plugins'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/initializer.rb:165:in `process'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/initializer.rb:113:in `send'
    E:/webservers/railsapps/redmine/config/../vendor/rails/railties/lib/initializer.rb:113:in `run'
    E:/webservers/railsapps/redmine/config/environment.rb:24
    d:/dev/lang/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    d:/dev/lang/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in'
    E:/webservers/railsapps/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    E:/webservers/railsapps/redmine/vendor/rails/railties/lib/tasks/misc.rake:4
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
    d:/dev/lang/Ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:607:in `invoke_prerequisites'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:604:in `each'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:604:in `invoke_prerequisites'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:596:in `invoke_with_call_chain'
    d:/dev/lang/Ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
    d:/dev/lang/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31
    d:/dev/lang/Ruby/bin/rake:19:in `load'
    d:/dev/lang/Ruby/bin/rake:19

Any other suggestions?

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Timothy High over 9 years ago

Patrick van der Velde wrote:

Alright I finally had time to try this. I moved both graphs and redmine-hudson out of the plugin directory and ran the rake rad:db:migrate command. Still no dice. The output is:
...
Object is not missing constant Project!
...
Any other suggestions?

Nothing yet. I've never seen this error before. But it looks like you're not the only one: http://www.redmine.org/boards/2/topics/12277
In your case, it seems directly related to the Arch Decisions plugin; not so for this other guy. Unfortunately, there's no solution posted. I'll keep looking.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Timothy High over 9 years ago

Here's one more example of this problem:
http://www.redmine.org/boards/2/topics/11920

The recommendation there was related to the mysql gems, but there's no word on whether or not it worked:

Try:
1) apt-get install libmysqld-dev
2) gem install mysql

You might want to try reinstalling/upgrading your gems in general, but I don't have any specific advice for you as to which or how right now.

Looking at it from another angle, it seems that the problem is related to the issue patch in /lib/arch_decisions_issue_patch.rb. When it patches the Issue, it's going through the issue.rb script again, and is choking on the acts_as_attachable (but only temporarily, since it ends up finding it). We know where it's happening, but not why. All I can say is that yours isn't the only case. Can anyone else out there give a hand?

I'll try asking on the IRC channel.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Paul paul over 9 years ago

I'm having trouble using the latest version of the plugin with Redmine 0.9.6 and Postgres 8.4.4. The migrations all worked, but when I click on Factors, I get a 500 error.
Here's the output of my production.log:

Processing FactorsController#index (for 1.2.3.4 at 2010-07-13 13:54:39) [GET] Parameters: {"project_id"=>"myproject", "action"=>"index", "controller"=>"factors"} ActiveRecord::StatementInvalid (PGError: ERROR: invalid input syntax for integer: "myproject" LINE 1: SELECT * FROM "projects" WHERE ("projects"."id" = E'myproject'...

Why is it asking for projects.id and not projects.identifier (which would be 'myproject')?

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Timothy High over 9 years ago

Paul paul wrote:

I'm having trouble using the latest version of the plugin with Redmine 0.9.6 and Postgres 8.4.4. The migrations all worked, but when I click on Factors, I get a 500 error.

Why is it asking for projects.id and not projects.identifier (which would be 'myproject')?

Sorry about that. This was the first page I ever wrote in Redmine. Or in Rails, for that matter. So, I wasn't quite clear on standards at that point. It looks like I may have mixed usage of id's and identifiers, since the query looks for both possibilities, but the id-based query wasn't doing a to_i call on the parameter. My guess is that the problem is with Posgres, not with the latest Redmine, since I see no relevant changes there.

I just pushed a very quick patch. Try it and let me know if it works.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Paul paul over 9 years ago

Yes, tried it, seems to work fine now. Thanks Timothy!

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by basyl green over 9 years ago

this is really a great plugin. remember thw forst time i read about it in the article found by http://filecraft.com

shared files SE. glad to find this site and learn more about Redmine Arch Decisions plugin.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Boris Brodski over 9 years ago

Hello!

Thanks for this cool plugin! I try to get it to work with the current RedMine version (1.0.3). It looks very promising. I found only two issues:

- Adding existing factors doesn't work, if you use relative url root, what I do (see http://www.redmine.org/wiki/1/HowTo_Install_Redmine_in_a_sub-URI). I fixed this myself by adding "#{Redmine::Utils::relative_url_root}" to the URL at
app/views/factors/index.html.erb:63. (See attached diff-file)

- The "New Comment" link in the discussion section do nothing but jumping to the begin of the page. There are also no text fields to enter subject and text, though. Adding new comment directly to the database works - the comment appears on the page.
This issue stays open for me.

Thanks for comments!

add-factor-bugfix.diff Magnifier - Allow using relative url to redmine, when adding an existing factor. (817 Bytes)

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Boris Brodski over 9 years ago

Boris Brodski wrote:

- The "New Comment" link in the discussion section do nothing but jumping to the begin of the page. There are also no text fields to enter subject and text, though. Adding new comment directly to the database works - the comment appears on the page.
This issue stays open for me.

Sorry, this was my fault. The permissions should be set first :-)

Thanks for your nice work!

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Timothy High over 9 years ago

Great, I'm glad you got this working! I have my hands pretty full with other stuff these days, so I wasn't sure I'd be able to help you out.
Thanks for the patch! I'll see if I can test it and add it to the project in the next day or two.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Kalo Paidi about 9 years ago

Remember the first time i read about it in the article found at http://www.btscene.com

shared files SE. glad to find this site and learn more about Redmine Arch Decisions plugin.

HTTPS support for redmine arch decisions - Added by Bogus Exception over 8 years ago

Please have your plugin look at the global settings to determine which way the redmine install is configured (HTTP or HTTPS, admin definable via GUI).

Then with this setting, change the URLs each button goes to from HTTP:// to HTTPS:// if the user has redmine as HTTPS.

Right now, it always goes to http, and where port 80 is blocked, and only 443 can come in (mine), the system becomes unusable due to the great plugin.

Thanks very much!

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Jenny Tay over 8 years ago

i am pretty amazed to find this nice plugin, thanks redmine for it. But i got a problem while using it. I am getting uknown error and i am pretty dumb on it.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Timothy High over 8 years ago

Jenny Tay wrote:

i am pretty amazed to find this nice plugin, thanks redmine for it. But i got a problem while using it. I am getting uknown error and i am pretty dumb on it.

Can you provide more information on the problem? Where are you getting this error? From the web page, or from the command line? Which page? What are you doing when you see this? Can you send a screen shot?

Most of the problems we have seen so far with the plugin were due to untested versions/configurations. Can you tell us what your system/Redmine configuraiton is?

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by William Roush about 8 years ago

I'm getting this error on various pages (causes some UI to break).

ActionView::MissingTemplate (Missing template arch_decisions_mailer/arch_decision_edit.text.erb in view path vendor/plugins/redmine_arch_decisions/app/views:app/views:vendor/plugins/redmine_arch_decisions/app/views):
app/models/mailer.rb:430:in `render_multipart'
vendor/plugins/redmine_arch_decisions/app/controllers/arch_decisions_controller.rb:139:in `register_and_notify_update'
vendor/plugins/redmine_arch_decisions/app/controllers/arch_decisions_controller.rb:103:in `new_factor'

Rendering /opt/redmine/public/500.html (500 Internal Server Error)

I do have a bunch of rhtml pages in here, is this a change from 1.3.0? I'm going to test this, if it works I'll probably update the version on github.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Hal Gottfried about 8 years ago

I was able to capture the error today ::

Template is missing
Missing template arch_decisions_mailer/arch_decision_add.text.erb in view path vendor/plugins/Redmine_Scrumbler/app/views:vendor/plugins/advanced_roadmap/app/views:vendor/plugins/redmine_arch_decisions/app/views:vendor/plugins/redmine_bookmarks/app/views:vendor/plugins/redmine_burndown_charts/app/views:vendor/plugins/redmine_close_button/app/views:vendor/plugins/redmine_closed_issue/app/views:vendor/plugins/redmine_dmsf/app/views:vendor/plugins/redmine_graph_activities/app/views:vendor/plugins/redmine_issue_history/app/views:vendor/plugins/redmine_issue_history_tabs/app/views:vendor/plugins/redmine_knowledgebase/app/views:vendor/plugins/redmine_time_tracker/app/views:vendor/plugins/redmine_todos_plugin/app/views:app/views:vendor/plugins/redmine_arch_decisions/app/views

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Michael Lednev almost 8 years ago

Today I've upgraded redmine from version 1.1.2 to 1.3.2 via debian packages. Now all arch decisions shows something like "Added by {{author}} {{age}} ago". I've pulled latest version of plugin from github but result was the same.

OK. Seems this plugin is abandoned. ) I've found out that it's needed to replace {{something}} with %{something} in locale .ymls for this messages to display correctly.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Timothy High almost 8 years ago

Hi everyone,
Sorry for the lack of support - this plugin has been in hibernation for a long time.

I am happy to report that I finally got around to making the fix requested by Michael Lednev (thanks for posting it for anyone who needed it!). I have also upgraded my installation to Redmine 1.4, and Ruby 1.9.2, and after a lot of fixes, it all seems to be working.

As usual, if you have any problems, please post them here, and I'll do my best to take care of them. Sooner is better than later, since it's now fresh in my mind.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Michael Lednev almost 8 years ago

Thanks Timothy.

I cannot migrate plugins after pull from repository:

** Invoke db:migrate:plugins (first_time)
** Invoke environment (first_time)
** Execute environment
rake aborted!
syntax error on line 88, col -2: `    text_discussion_count_plural: "%{count} комментарии" 
    text_arch_decision_discussion_added: "%{parent_type} %{identifier} появился новый комментарий, добавленный %{author}." 
    text_arch_decision_discussion_updated: "%{parent_type} %{identifier} содержал новый комментарий, обновленный %{author}." 
    text_arch_decision_discussion_updated: "%{parent_type} %{identifier} комментарий к обсуждению обновлен %{author}." 
    text_arch_decision_issue_remove_confirmation: Удалить задачу #%{id} из этого системного решения?
    text_arch_decision_url_remove_confirmation: Удалить внешнюю ссылку из этого системного решения?
    text_issue_arch_decision_remove_confirmation: Удалить системное решение #%{id} из этой задачи?
    text_or_external_url: или внешнюю ссылку:'
/usr/lib/ruby/1.8/yaml.rb:133:in `load'
/usr/lib/ruby/1.8/yaml.rb:133:in `load'
/usr/lib/ruby/1.8/yaml.rb:144:in `load_file'
/usr/lib/ruby/1.8/yaml.rb:143:in `open'
/usr/lib/ruby/1.8/yaml.rb:143:in `load_file'

Removing ru.yml fixed migration.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Timothy High almost 8 years ago

Michael Lednev wrote:

Thanks Timothy.

I cannot migrate plugins after pull from repository:
[...]

Removing ru.yml fixed migration.

Hi!
I tried migrating here, and I couldn't replicate. Is it possible it's a character encoding issue? I did find some Windows-like EOL characters on the end of the Russian file, so that might be it. Can you update your repo, and give it another shot?

My fixes don't actually require a migration, so it shouldn't be a problem for those that just want to update this plugin right now.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Michael Lednev almost 8 years ago

Yes, probably that was the problem. Now migration works fine.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Timothy High almost 8 years ago

Michael Lednev wrote:

Yes, probably that was the problem. Now migration works fine.

Great, thanks for the help!

1 2 (26-47/47)