개인 프로젝트 or 진행해야할 일들 or 각종 기록을 Redmine으로 관리하고 있습니다.

그러다 보니 본문 수정이 작고 가끔은 본문과는 별도로 덧글에도 정보를 기록하게 되는데요

이력과 덧글이 섞여 있으면 보기가 불편해서 아래와 같은 수정 이력 정보를 저거하려 합니다.

Redmine DB에 sp를 만들어 주신 후 사용하시면 됩니다. 아래 코드는 2달 지낸 이력을 삭제하게 됩니다.

use `redmine_default`;

DROP PROCEDURE IF EXISTS `sp_journals_cleanup`;
DELIMITER $$
CREATE PROCEDURE `sp_journals_cleanup`(
		OUT o_result	int
)
DETERMINISTIC
BEGIN
    /*
        레드마인에서 2달 이상 지난 수정이력은 제거
     */
    set @v_delete_date := date_add(current_timestamp, interval -2 month);   -- 동일한 날짜를 기준으로 제거하기 위한 삭제 기준일
    set o_result = 0;

    delete ta
    from journal_details as ta
    inner join (    select id
                    from journals
                    where journalized_type = 'issue' and notes = '' and created_on < @v_delete_date
    ) as tb on ta.journal_id = tb.id;
    set o_result = o_result + row_count();

    delete from journals
    where journalized_type = 'issue' and notes = '' and created_on < @v_delete_date;

    set o_result = o_result + row_count();

END $$
DELIMITER ;

redmine_ckeditor 설치시에 발생한 오류 메시지 압니다.

 

✔️ 아파치 오류로그를 확인합니다.

# cat /var/log/apache2/error.log

[ 2023-03-25 23:50:32.7457 16626/7f823c25e700 age/Cor/App/Implementation.cpp:304 ]: Could not spawn process for application /usr/share/redmine: An error occurred while starting up the preloader.
  Error ID: 6fbf3cb8
  Error details saved to: /tmp/passenger-error-kHZBJl.html
  Message from application: uninitialized constant Rich (NameError)
  /usr/share/redmine/lib/plugins/redmine_ckeditor-1.2.3/lib/redmine_ckeditor.rb:136:in `apply_patch'
  /usr/share/redmine/lib/plugins/redmine_ckeditor-1.2.3/init.rb:5:in `block (2 levels) in <top (required)>'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:426:in `instance_exec'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:426:in `block in make_lambda'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:198:in `block (2 levels) in halting'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:606:in `block (2 levels) in default_terminator'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:605:in `catch'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:605:in `block in default_terminator'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:199:in `block in halting'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:513:in `block in invoke_before'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:513:in `each'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:513:in `invoke_before'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:131:in `run_callbacks'
  /usr/share/rubygems-integration/all/gems/activesupport-5.2.3/lib/active_support/reloader.rb:89:in `prepare!'
  /usr/share/rubygems-integration/all/gems/railties-5.2.3/lib/rails/application/finisher.rb:63:in `block in <module:Finisher>'
  /usr/share/rubygems-integration/all/gems/railties-5.2.3/lib/rails/initializable.rb:32:in `instance_exec'
  /usr/share/rubygems-integration/all/gems/railties-5.2.3/lib/rails/initializable.rb:32:in `run'
  /usr/share/rubygems-integration/all/gems/railties-5.2.3/lib/rails/initializable.rb:61:in `block in run_initializers'
  /usr/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
  /usr/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
  /usr/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
  /usr/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
  /usr/lib/ruby/2.7.0/tsort.rb:347:in `each'
  /usr/lib/ruby/2.7.0/tsort.rb:347:in `call'
  /usr/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
  /usr/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
  /usr/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
  /usr/share/rubygems-integration/all/gems/railties-5.2.3/lib/rails/initializable.rb:60:in `run_initializers'
  /usr/share/rubygems-integration/all/gems/railties-5.2.3/lib/rails/application.rb:361:in `initialize!'
  /usr/share/redmine/config/environment.rb:14:in `<top (required)>'
  config.ru:3:in `require'
  config.ru:3:in `block in <main>'
  /var/lib/gems/2.7.0/gems/rack-2.2.6.2/lib/rack/builder.rb:125:in `instance_eval'
  /var/lib/gems/2.7.0/gems/rack-2.2.6.2/lib/rack/builder.rb:125:in `initialize'
  config.ru:1:in `new'
  config.ru:1:in `<main>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'


[ 2023-03-25 23:50:32.7513 16626/7f822f7fe700 age/Cor/Con/CheckoutSession.cpp:283 ]: [Client 2-1] Cannot checkout session because a spawning error occurred. The identifier of the error is 6fbf3cb8. Please see earlier logs for details about the error.

 

 

 

오라클 클라우드에 개인용 Redmine을 사용하고 있으며

어느날 갑자기 아래와 같은 오류가 발생하였고, 조치방법 입니다.

오류 상황에서 화면에는 딱 아래의 내용만 표시됩니다.

위 내용을 열심히 해석하고 포함된 링크들을 모두 클릭해서 살펴보아도 별로 도움은 되지 않습니다. 

빠르게 포기하시고 먼저 오류를 살펴 보아야 합니다.

 

✔️cat /var/log/apache2/error.log 명령을 실행하여 오류 파일 내용을 확인합니다.

맨 마지막 오류부터 위로 올라가시며서 살펴보셨을 때 Gemfile.lock 관련 내용이 있다면 아래 조치 사항을 참고해서 해결하실 수 있을 것입니다.

아파치 오류 로그

✔️Gemfile.lock 파일의 permissions 관련 오류 해결 방법 (순서대로 명령을 실행하시면 됩니다.)

    $ sudo rm -rf /usr/share/redmine/Gemfile.lock
    $ sudo touch /usr/share/redmine/Gemfile.lock
    $ sudo chown www-data:www-data /usr/share/redmine/Gemfile.lock
    $ sudo service apache2 restart

 

레드마인의 검색 기능에서 검색된 결과들은 클릭시 동일 탭에서 표시됩니다.

일반 일감의 경우는 크게 상관이 없으나 

보통 검색 작업은 검색 -> 항목 클릭 -> 내용 확인 -> 다른 검색 결과 항목 클릭 -> 내용 확인을

반복하게 되는데 이때 항목을 클릭했을 때 내용이 별도 탭으로 표시되면

재 검색하는 시간이 감소 합니다.

우클릭 / [새 탭에서 링크 열기] 메뉴를 사용해도 되지만 이를 깜박 잊고 클릭하게 되면 검색 페이지를 벗어났기 때문에

뒤로 가기로 검색시 첫 페이지 부터 표시되는 불상사가 발생합니다.

 

아래와 같이 레드마인 소스를 수정 및 적용하게 되면 검색 결과의 모든 링크는 

클릭시 자동으로 별도 탭에 표시 됩니다. 

 

- 레드마인 : 4.2.3 버전을 기준으로 설명 드립니다. (다른 버전도 파일명 위치 등이 비슷하기 때문에 이 글을 참고로 쉽게 수정하실 수 있습니다.)

- 레드마인의 설치 경로는 C:\Bitnami\redmine-4.2.3-3 라고 가정하겠습니다. 

1. C:\Bitnami\redmine-4.2.3-3\apps\redmine\htdocs\app\views\search\index.html.erb  파일을 메모장으로 열어

2.  link_to 함수에 아래와 같이 , :target => "_blank" 키워드를 추가 합니다.

<% if @results %>
    <div id="search-results-counts">
      <%= render_results_by_type(@result_count_by_type) unless @scope.size == 1 %>
    </div>
    <h3><%= l(:label_result_plural) %> (<%= @result_count %>)</h3>
    <dl id="search-results">
      <% @results.each do |e| %>
        <dt class="<%= e.event_type %> icon icon-<%= e.event_type %>">
          <%= content_tag('span', e.project, :class => 'project') unless @project == e.project %>
          <%= link_to(highlight_tokens(e.event_title.truncate(255), @tokens), e.event_url, :target => "_blank") %>
        </dt>
        <dd><span class="description"><%= highlight_tokens(e.event_description, @tokens) %></span>
        <span class="author"><%= format_time(e.event_datetime) %></span></dd>
      <% end %>
    </dl>
<% end %>

3.  redmineThin 서비스 2개를 모두 재시작 합니다.

4. 검색 결과에 target="_blank" 키워드가 추가된것이 보입니다.

 

5. 이제 검색된 결과의 항목을 클릭하게 되면 별도 탭으로 해당 게시물이 열립니다.

+ Recent posts