Redmine Arch Decisions plugin (for tracking technical decisions)

Added by Timothy High almost 5 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 Timothy High almost 5 years ago

Forgot to add other images... I'll embed them all, too.

Index listing of Arch Decisions

Basic Arch Decision information

Factors listed for an Arch Decision

Arch Decision Strategies

Arch Decisions related to an Issue

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Eric Voisard almost 5 years ago

mmh, very interesting plugin. And thanks for the detailed explanations of the underlying philosophy in your blog. I'll think about how it would integrate into our PM approach...

BTW, is there a way for categorizing (e.g. with a custom field) Factors such as requirements, objectives, risks, etc?

Looking forward to a 0.9x release...
Eric

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

Thanks!
I hope you end up using it. I find it very helpful.

There are several categorizations I'm considering doing. I have thought about that for Factors. Since they can be just about anything, the categorization would have to be pretty open-ended (as in, you should be able to create new categories on the spot, sort of like tags). One other complication is that some kinds of factors may already be stated somewhere in another way. A requirement, for example, could very well be an issue in Redmine, so there should be a link to it. Also, one decision may impact another ("We have decided to use JBoss, so using their ESB would be more compatible"), so in a sense, arch decisions become factors of their own. I'm mulling over the best way to handle that sort of thing. For now, you can just make the statement, then link to the item in the "Evidence" section.

Another thing that needs categorization is the ADs themselves. In my old place of work, I had two sets of orthogonal categorizations: functional component (which functionality does this most affect) and non-functional (which framework, layer, technology, etc.). It was very helpful for reporting, for finding ADs, and for taking a look at all the decisions related to a given topic. But in reality, a tag-based approach is the only one that makes sense. So look for tagging in the future.

And the last idea I'll mention here is the hierarchical nature of ADs. One big decision can lead to many more specific decisions that need to be made. Also, one decision can be deprecated in favor or another, or make another decision irrelelvant. So there will eventually be some sort of "Related ADs" field in the future as well.

But first, let's get it working with 9.2! :)

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Chris Platts almost 5 years ago

This looks superb!

Mixing high-level decisions with the nuts-and-bolts of day-to-day work never seems like the right thing to do, but there's not really a good way of avoiding that in Redmine as it is.

Very much looking forward to a trunk-compatible release :)

Cheers,
Chris

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

It took me all weekend (at least, all my late-night hours), but now you've got it. The latest release of the plugin is compatible with 0.9.2. For those still using 0.8.x, I created a separate branch ("redmine-0.8.4"). Now you've got no excuses not to try it! ;)

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Lucio Grenzi almost 5 years ago

Hi,
I'm trying to install that plugin on a Redmine 0.9.1 (rails 2.2.3) but, when I type the command

rake db:migrate_plugin RAILS_ENV=prodction

(in /usr/share/redmine)
  • Invoke db:migrate_plugins (first_time)
  • Invoke environment (first_time)
  • Execute environment
  • Execute db:migrate_plugins
    Migrating engines...
    Migrating acts_as_activity_provider...
    Migrating acts_as_attachable...
    Migrating acts_as_customizable...
    Migrating acts_as_event...
    Migrating acts_as_list...
    Migrating acts_as_searchable...
    Migrating acts_as_tree...
    Migrating acts_as_versioned...
    Migrating acts_as_watchable...
    Migrating awesome_nested_set...
    Migrating classic_pagination...
    Migrating coderay-0.7.6.227...
    Migrating gravatar...
    Migrating open_id_authentication...
    Migrating redmine_arch_decisions...
    CreateArchDecisionStatuses: migrating ===================================
    -- create_table(:arch_decision_statuses)
    -> 1.1557s

rake aborted!
An error has occurred, all later migrations canceled:

uninitialized constant CreateArchDecisionStatuses::ArchDecisionStatus
/usr/share/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:102:in `const_missing'
/usr/share/redmine/vendor/plugins/redmine_arch_decisions/db/migrate/004_create_arch_decision_statuses.rb:10:in `up_without_benchmarks'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:280:in `send'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:280:in `migrate'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:280:in `migrate'
(DELEGATION):2:in `__send__'
(DELEGATION):2:in `migrate'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:480
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:556:in `call'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:556:in `ddl_transaction'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:479:in `migrate'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:466:in `each'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:466:in `migrate'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:394:in `up'
/usr/share/redmine/vendor/rails/activerecord/lib/active_record/migration.rb:377:in `migrate'
/usr/share/redmine/vendor/plugins/engines/lib/engines/plugin/migrator.rb:20:in `migrate_plugin'
/usr/share/redmine/config/../vendor/plugins/engines/lib/engines/plugin.rb:93:in `migrate'
/usr/share/redmine/lib/tasks/migrate_plugins.rake:8
/usr/share/redmine/lib/tasks/migrate_plugins.rake:5:in `each'
/usr/share/redmine/lib/tasks/migrate_plugins.rake:5
/usr/lib/ruby/1.8/rake.rb:636:in `call'
/usr/lib/ruby/1.8/rake.rb:636:in `execute'
/usr/lib/ruby/1.8/rake.rb:631:in `each'
/usr/lib/ruby/1.8/rake.rb:631:in `execute'
/usr/lib/ruby/1.8/rake.rb:597:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/1.8/rake.rb:590:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/rake.rb:583:in `invoke'
/usr/lib/ruby/1.8/rake.rb:2051:in `invoke_task'
/usr/lib/ruby/1.8/rake.rb:2029:in `top_level'
/usr/lib/ruby/1.8/rake.rb:2029:in `each'
/usr/lib/ruby/1.8/rake.rb:2029:in `top_level'
/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:2023:in `top_level'
/usr/lib/ruby/1.8/rake.rb:2001:in `run'
/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:1998:in `run'
/usr/bin/rake:28

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Vladimir Dzalbo almost 5 years ago

rake db:migrate_plugin RAILS_ENV=prod*u*ction

you missed 'u' in production

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Lucio Grenzi almost 5 years ago

Sorry, I checked one more time but it is a transcription error. the problem still continue.
Right command is:

rake db:migrate_plugin RAILS_ENV=production

Thank you

Problems with question_plugin - Added by Vladimir Dzalbo almost 5 years ago

I've tried installing this plugin and it seems to work perfectly apart from one thing:

I have also question_plugin (https://projects.littlestreamsoftware.com/projects/redmine-questions) installed and after installing redmine_arch_decisions, there is an error while updating a project:


ActionView::MissingTemplate (Missing template question_mailer/asked_question.text.plain.rhtml in view path app/views:vendor/plugins/redmine_arch_decisions/app/views):
  app/models/mailer.rb:384:in `render_multipart'
  vendor/plugins/question_plugin/app/models/question_mailer.rb:16:in `asked_question'
  vendor/plugins/question_plugin/app/models/journal_questions_observer.rb:9:in `after_create'
  C:/Program Files/BitNami Redmine Stack/ruby/lib/ruby/1.8/observer.rb:185:in `notify_observers'
  C:/Program Files/BitNami Redmine Stack/ruby/lib/ruby/1.8/observer.rb:184:in `each'
  C:/Program Files/BitNami Redmine Stack/ruby/lib/ruby/1.8/observer.rb:184:in `notify_observers'
  app/models/journal.rb:43:in `save'
  app/models/issue.rb:543:in `create_journal'
  app/controllers/issues_controller.rb:577:in `issue_update'
  app/controllers/issues_controller.rb:199:in `update'

For some reason the question plugin starts looking for its templates in the arc_decision folder... Not sure why this could happen...

RE: Problems with question_plugin - Added by Timothy High almost 5 years ago

Vladimir Dzalbo wrote:

I've tried installing this plugin and it seems to work perfectly apart from one thing:

I have also question_plugin (https://projects.littlestreamsoftware.com/projects/redmine-questions) installed and after installing redmine_arch_decisions, there is an error while updating a project:

[...]

For some reason the question plugin starts looking for its templates in the arc_decision folder... Not sure why this could happen...

When I upgraded to 0.9.2, I was having problems with templates myself, and added a line to add the plugin's path to the mailer's view path.
Could you register this as a bug in the issue tracker? http://opensource.integritas.com.br/projects/redmine-ad/issues
I'll take care of it there ASAP.

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

Lucio Grenzi wrote:

Sorry, I checked one more time but it is a transcription error. the problem still continue.
Right command is:

rake db:migrate_plugin RAILS_ENV=production

Thank you

Hmm... I remember having a similar problem when I was doing my upgrade. Could you register this as a bug in the issue tracker?
http://opensource.integritas.com.br/projects/redmine-ad/issues

thanks!

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

Lucio Grenzi wrote:

Sorry, I checked one more time but it is a transcription error. the problem still continue.
Right command is:

rake db:migrate_plugin RAILS_ENV=production

Thank you

I created an issue in the main issue tracker: http://opensource.integritas.com.br/issues/show/605
Please post your comments there.

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

Plugin installed its tables in database in latin1 charset instead of utf8. Yes, latin1 is default for redmine database but all other plugins have installed their tables in utf8.

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Alexey Lustin almost 5 years ago

i did not have a message from Public ITS with activation link on my e-mail (account Alexey Lustin)
thats why i write here:

1. feature request: - add statuses label of AD and Factors to i10n (<plugin_dir>/config/locales/en.yml)
2. i have attached ru.yml (0.1 version) to this comment

thanks for this plugin - very useful in IT Department

ru.yml Magnifier - Russian locale file for Redmine Arch Decisions plugin (6.38 KB)

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

Michael Lednev wrote:

Plugin installed its tables in database in latin1 charset instead of utf8. Yes, latin1 is default for redmine database but all other plugins have installed their tables in utf8.

Ok. I've created the following bug for this: http://opensource.integritas.com.br/issues/show/606

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

Alexey Lustin wrote:

i did not have a message from Public ITS with activation link on my e-mail (account Alexey Lustin)
thats why i write here:

1. feature request: - add statuses label of AD and Factors to i10n (<plugin_dir>/config/locales/en.yml)
2. i have attached ru.yml (0.1 version) to this comment

thanks for this plugin - very useful in IT Department

Great, thanks! I looked for your account in the site, but I don't see it. Can you log in? It looks like your account wasn't created.
I've created two issues to track your request and contribution:

1) http://opensource.integritas.com.br/issues/show/607
2) http://opensource.integritas.com.br/issues/show/608

RE: Redmine Arch Decisions plugin (for tracking technical decisions) - Added by Alexey Lustin almost 5 years ago

my account in your site is not activated, but created

this ru.yml i have created on my work (Windows (utf-8))
in this evening i have created some files in deferent encoding and files type based on default ru.yml
see the attache for this comment

and also this is the quoute of text in this file

ru:
    field_id: Номер
    field_summary: Описание
    field_details: Детали
    field_evidence: Доказательства
    field_problem_description: Описание проблемы
    field_resolution: Резолюция
    field_created_by: Создана
    field_updated_by: Обновлена
    field_created_on: Создана в
    field_updated_on: Обновлена в
    field_is_rejected: Отклонена?
    field_reason_rejected: Причина отклонена
    field_short_name: Короткое название
    field_content: Содержание
    field_scope: Область действия
    field_issue_type: Свазана с АР

    label_id: "№" 
    label_factor: Фактор
    label_factor_plural: Факторы
    label_factor_new: Новый <u>Ф</u>актор
    label_factor_add: <u>Д</u>обавить фактор
    label_factor_scope_global: Глобальная
    label_factor_scope_project: Проект 
    label_factor_scope_arch_decision: Архитектурное решение
    label_factors_prioritized: Факторы (отсортированы по важности)
    label_factors_reorder: Переместите для пересортировки
    label_created_time: Создано {{time}} назад
    label_arch_decision: Архитектурное решение
    label_arch_decision_plural: Архитектурные решения
    label_arch_decision_new: Новое архитектурное решение
    label_arch_decisions_related: Свазанные архитектурные решения
    label_strategy: Стратегия
    label_strategy_plural: Стратегии
    label_strategy_new: Новая <u>С</u>тратегия
    label_discussion: Обсуждение
    label_discussion_comment: Комментарий к обсуждению
    label_discussion_new: Новый <u>К</u>омментарий
    label_issue_add: Добавить <u>З</u>адачу
    label_issue_or_url: Задача или внешняя ссылка
    label_ad_issue_type_task: Задача
    label_ad_issue_type_poc: Проверка концепции
    label_ad_issue_type_impl: Осуществление
    label_ad_issue_type_gov: Регулируется
    label_ad_issue_type_task_phrase: Задача для
    label_ad_issue_type_poc_phrase: Проверка концепции для
    label_ad_issue_type_impl_phrase: Осуществление
    label_ad_issue_type_gov_phrase: Регулируется
    # Created to avoid duplicate definition conflicts (see Issue #598)
    label_rad_added_time_by: "Добавлена {{author}} {{age}} назад" 
    label_rad_updated_time_by: "Обновлена {{author}} {{age}} назад" 

    button_remove: Удалить

    notice_create_discussion_failed: Невозможно создать комментарий к обсуждению

    error_discussion_parents_nil: Обсуждение не связано ни с решением, ни с фактором, ни со стратегией
    error_factor_scope_invalid: Область применения указаная для данного фактора неверна
    error_factor_project_nil: Фактор должен быть непосредственно ассоциирован с проектом, если область его применения указана как 'Проект' или 'Архитектурное решение'    
    error_factor_project_not_nil: Фактор не может быть непосредственно ассоциирован с проектом, если в качестве области применения указана 'Глобальная'
    error_factor_project_mismatch: Одно или более архитектурных решений уже ассоциировано с этим фактором и другим проектом
    error_factor_multiple_ads: Фактор с областью 'Архитектурное решение' не может быть ассоциирован с более чем одним архитектурным решением в один момент
    error_ad_issue_url_and_issue_nil: Вы должны указать номер задачи или внешнюю ссылку (URL) для связи с этим архитектурным решением
    error_ad_issue_type_invalid: Тип выбранной взаимосвязи задачи неверен
    text_factor_destroy_confirmation: Вы уверены что хотите удалить фактор &#35;{{id}} и его содержимое ?
    text_arch_decision_destroy_confirmation: Вы уверены что хотите удлаить архитектурное решение &#35;{{id}} и его содержимое?
    text_arch_decision_factor_remove_confirmation: Удалить фактор &#35;{{id}} из этого архитектурного решения ?
    text_arch_decision_added: Архитектурное решение {{identifier}} создано {{author}}.
    text_arch_decision_updated: Архитектурное решение {{identifier}} обновлено {{author}}.
    text_strategy_destroy_confirmation: Вы уверены что хотите удалить Стратегию &#35;{{id}} и всё её содержимое ?
    text_discussion_count_none: Нет комментариев
    text_discussion_count_singular: "{{count}} комментариев" 
    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_issue_remove_confirmation: Удалить задачу &#35;{{id}} из этого архитектурного решения ?
    text_arch_decision_url_remove_confirmation: Удалить внешнюю ссылку из этого архитектурного решения ? 
    text_issue_arch_decision_remove_confirmation: Удалить архитектурное решение &#35;{{id}} из этой задачи ?
    text_or_external_url: или внешнюю ссылку:

ru_yml.zip - zip file with yml in defferent encodings (7.3 KB)

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

I'm trying to run the db:migrate_plugins rake task but I get the following error:

E:\webservers\railsapps\redmine>set RAILS_ENV=production
E:\webservers\railsapps\redmine>rake db:migrate_plugins --trace
(in E:/webservers/railsapps/redmine)
  • Invoke db:migrate_plugins (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

I have no idea what I'm doing wrong so if anybody could provide some suggestions that would be amazing :)

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

I'm not sure what to tell you here. I've seen similar errors, but not that exact one. What's really strange to me is the "not" in:

Object is not missing constant Project!

It looks like something made it think it couldn't find Project, which is a standard Redmine class, but then suddenly found it when it was trying to handle the error. I'll have to look in the source code to see what's up.

What's more, it looks like it was the Issue class, in it's act_as_attachable call, that failed. Some I'm somewhat at a loss. My first guess would be that there's something wrong with your Redmine installation in general.

  • Were you able to migrate the main database using rake?
  • Do you have any other plugins besides Arch Decisions installed? If so, which?
  • What versions are you using of everything? Are all your gems up to date?

You might want to try deleting the Arch Decisions plugin, and running migrate_plugins again, just to see what happens.

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

I installed Redmine about a month ago and it migrated fine (after some initial issues). It seems that everything is running fine so far. I've created some projects, issues etc.

My install is: Redmine 0.9.3.stable (MySQL) on Windows 7 x64
Plugins (besides all the default Redmine stuff):
- Redmine Graphs plugin 0.1.0
- Redmine Hudson plugin 1.0.3.1

I've just tried removing Arch Decisions and running migrate_plugins and that works fine. The output is:

E:\webservers\railsapps\redmine>rake db:migrate_plugins
(in E:/webservers/railsapps/redmine)
Migrating engines...
Migrating acts_as_activity_provider...
Migrating acts_as_attachable...
Migrating acts_as_customizable...
Migrating acts_as_event...
Migrating acts_as_list...
Migrating acts_as_searchable...
Migrating acts_as_tree...
Migrating acts_as_versioned...
Migrating acts_as_watchable...
Migrating awesome_nested_set...
Migrating classic_pagination...
Migrating coderay-0.7.6.227...
Migrating graphs...
Migrating gravatar...
Migrating open_id_authentication...
Migrating prepend_engine_views...
Migrating redmine_hudson...
Migrating rfpdf...
Migrating ruby-net-ldap-0.0.4...

I'm guessing this also means that my gems are up to date, but I'm a total Ruby noob so there may well be something wrong.
Is there any other information that I can get that would help diagnosing the problem?

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

Hmm... looks good to me. Can you try reinstalling Arch Decisions, then running the following command?

rake rad:db:migrate

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

When I copy the Arch Decisions directory back to the vendor/plugins directory and run the rake rad:db:migrate command it still fails. The trace 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

Could I be doing something wrong with the file copy? Or have I maybe gotten the wrong version from github? I just grabbed the latest version (I assume, I went to the github page and clicked the 'download source' button).

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

I don't think so. My guess is it's some sort of conflict with the other two plugins. Try renaming the module in /lib/arch_decisions_issue_patch.rb from IssuePatch to ArchDecisionsIssuePatch.

If that doesn't work, try temporarily removing the other two plugins you mentioned and see if that does it.

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

If I want to remove the other two plugins do I need to run a migrate for all the plugins or just arch. I don't really want to lose my settings etc.

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

If it's a conflict, it would just be with the Ruby code, not with the database. So you could just move those plugins to an outside folder, then move them back.

1 2 (1-25/47)