zoukankan      html  css  js  c++  java
  • Redmine(Ruby)配置经验

    Redmine(Ruby)配置经验
    记录在配置Redmine邮件同步过程中遇到的各种问题与解决方法

    1. 如何安装Redmine
    http://www.redmine.org/projects/redmine/wiki/RedmineInstall

    2. 如何配置自动邮件收取和定时同步
    Windows下:http://www.redmine.org/projects/redmine/wiki/How_to_install_Redmine_in_Linux_Windows_and_OS_X_using_BitNami_Redmine_Stack
    类Unix环境下:http://www.redmine.org/projects/redmine/wiki/RedmineReceivingEmails#Forwarding-emails-from-your-email-server
    由于我主要是用Mac下配置的,下面主要为Mac下的命令。在其他操作系统下可能会略有不同
    由于邮件服务器不是自己架设的,只能用imap或pop3同步的方法。
    测试下来pop3同步QQ企业邮箱可能会有问题,于是采用了imap

    3. Rake
    自动收邮件的方法redmine:email:receive_imap需要rake来运行
    关于什么是rake:
    Rake中文介绍
    http://hi.baidu.com/kenrome/item/0b178757da9c24948d12ed39
    Rake官方文档
    http://rake.rubyforge.org/

    4. 运行rake的条件
    运行rake首先要找到Rakefile所在的文件夹
    对于BitNami的Redmine,安装目录在:/Applications/redmine-2.3.0-0/apps/redmine/htdocs

    运行rake的时候如果遇到如下error:
    rake aborted!
    no such file to load - bundler/setup
    说明bundle没装好

    这时候就需要运行命令来安装bundle

    5. 安装bundle
    在Terminal里执行下列命令即可安装Bundle:
    gem install bundler
    bundle install
    bundle exec rake db:create

    如果要知道什么是bundle,可以查看链接:
    http://guides.rubyonrails.org/getting_started.html#creating-a-new-rails-project
    http://stackoverflow.com/questions/7454361/rubygems-do-not-install-on-os-x-lion

    装Bundle的时候可能遇到各种Error
    我遇到过的有:
    1. Json错误,靠stackoverflow错误信息解决
    2. 安装rmagick错误
    rmagick是最头疼的一个错误,是由于rmagick 2.13.1版本的一个不兼容的问题导致。虽然2.13.2版本里修正了,但是bundle本身不能选择版本,只能自动安装2.13.1
    修正方法:
    http://stackoverflow.com/questions/13942443/error-installing-rmagick-on-mountain-lion/13960185#13960185
    里面的路径可能会需要修改为/Users/<username>/.homebrew/Cellar/imagemagick/6.8.0-10/lib

    运行bundle exec rake db:create可能也会遇到如下Error:
    image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
    解决方法:
    http://stackoverflow.com/questions/8437455/rake-dbmigrate-mysql
    简单的方法是:在运行所有Terminal方法前,运行一下:export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
    永久解决方法是修改 .bash_profile

    6. 运行rake
    Redmine测试账号
    redmine.test@honestwalker.com
    Password01!

    如果要直接在Terminal里运行的话,先运行
    cd /Applications/redmine-2.3.0-0/apps/redmine/htdocs
    再运行
    export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
    最后运行
    bundle exec rake --silent redmine:email:receive_imap unknown_user=accept no_permission_check=1 RAILS_ENV="production" host=imap.exmail.qq.com port=993 username=redmine.test@honestwalker.com password=******* ssl=1 project=testproject1 tracker=Support
    可能会报一些编码问题,不过可以无视
    (SSL可能是必须的,之前不用SSL似乎没有正确收取)

    7. 定时运行
    类Unix系统下的定时运行是用cron
    关于cron的介绍可参见:
    cron定时任务(类Unix系统)中文介绍
    http://www.blogjava.net/chenlb/archive/2008/07/02/212123.html
    简单地说:
    crontab -e是修改cron的任务
    crontab -l是查看已创建的cron任务
    crontab -r是删除所有cron任务

    如果要用cron执行一句语法的范例可参见:
    */30 * * * * cd /Applications/redmine-2.3.0-0/apps/redmine/htdocs

    由于cron下执行任务都只能执行一行,但实际需要执行三行,所以需要用osascript(Mac下的脚本)

    8. osascript
    osascript的语法类似:
    osascript -e 'tell application "terminal"' -e 'do script "cd / cd /"' -e 'end tell'
    分号可以用来间隔命令,在同一个Terminal窗口执行多个命令

    所以最终的osascript命令为:
    osascript -e 'tell application "terminal"' -e 'do script "cd /Applications/redmine-2.3.0-0/apps/redmine/htdocs;export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH";bundle exec rake --silent redmine:email:receive_imap unknown_user=accept no_permission_check=1 RAILS_ENV="production" host=imap.exmail.qq.com port=993 username=redmine.test@honestwalker.com password=****** ssl=1 project=testproject1 tracker=Support"' -e 'end tell'

    9. 结果
    执行以下命令
    */30 * * * * osascript -e 'tell application "terminal"' -e 'do script "cd /Applications/redmine-2.3.0-0/apps/redmine/htdocs;export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH";bundle exec rake --silent redmine:email:receive_imap unknown_user=accept no_permission_check=1 RAILS_ENV="production" host=imap.exmail.qq.com port=993 username=redmine.test@honestwalker.com password=****** ssl=1 project=testproject1
    tracker=Support"' -e 'end tell'

  • 相关阅读:
    AsyncTask Note
    从今以后我要写我写过的技术及代码
    金额阿拉伯数转中文
    [导入]匿名方法引起的异常
    [导入]对.net事件的看法
    [导入]把DataGrid控件定制成漂亮的课程表
    [导入]IIs上的证书安装要点
    oracle创建表空间
    如何在命令行更改IP地址
    server.mappath 与page命名空间说明
  • 原文地址:https://www.cnblogs.com/edwardsun/p/3792426.html
Copyright © 2011-2022 走看看