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测试账号 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] password=****** ssl=1 project=testproject1 tracker=Support"' -e 'end tell'
|
请发表评论