Welcome to SpiceShop Theme

Sea summo mazim ex, ea errem eleifend definitionem vim. Ut nec hinc dolor possim mei ludus efficiendi ei sea summo mazim ex.

给NetBean For Ruby安装Fast Debugger

心血来潮,发现自己的Netbean IDE for ruby已经很老了,于是想更新一下。 用就用最新的,到这里下载了一个最新的NB 6.5 beta版本: http://bits.netbeans.org/download/trunk/nightly/latest/ 下载2分钟,安装1分钟,导入工程1分钟。然后点击调试按钮0.1s,系统居然提示我安装fast debugger 0.3版本。直接在IDE上安装了,等了N久就是安装不上。 接着在命令行飞快输入: gem install ruby-debug-ide -v ‘0.3.2’ –include-dependencies 等了半天,居然出现如下结果: INFO: `gem install -y` is now default and will be removed INFO: use –ignore-dependencies to install only the gems you list Bulk updating Gem source index for: http://gems.rubyforge.org/ 于是在美国的服务器上试了一把,结果是没问题。看来是我们这边网络有问题呀。设置好socket代理,嘿,我也不知道怎么在gem下设置socket代理,只知道设置http代理。无果,只能下载gem文件安装了。 Google了一把, ruby-debug-ide居然在Debug Commons里面。链接是:http://rubyforge.org/frs/?group_id=3085 因为ruby-debug-ide依赖ruby-debug-base,所以不得不找它。后来发现在ruby-debug这里,链接是http://rubyforge.org/frs/?group_id=1900 注意,如果你在windows安装,ruby-debug-base必须安装windows版本的。 一切搞定。要不是公司网络问题,我还不知道ruby-debug-ide的包究竟在哪里。 接下来想研究一下它是如何给ruby设置hook的。

Nginx+Mongrel+Rails配置摘要

Nginx+mongrel+Rails配置的方案很多,在这里只摘抄Nginx的配置文件,然后解释一下   user www www;#用户名和组都为www,前者为用户名,后者为用户组。如果主进程以root来运行,                            #nginx使用setuid()/setgid() 。如果没有指定组,nginix使用和用户名相同的组名。   worker_processes  10;  #worker 进程数     error_log  logs/error.log debug;   #错误日志文件,debug为级别 ,                                                    #有debug , info , notice ,warn ,error ,crit   pid        /var/run/nginx.pid;  #nginx的进程位置   events {       use epoll;     worker_connections  51200;   //worker连接数  }   http {      include       conf/mime.types;      default_type  application/octet-stream;     #charset  utf-8;  sendfile        on;  

Read More

eShortcuts

太不容易了,这么多shortcuts for e。决定每天背诵一遍。最主要是多用。 alt-p alt-j flash Controller   redirect_to rea reai rec reca recai render ra ral rf rfu ri ril rit =>render :inline => "<%= ‘hello’ %>", :type => :rxml rl rn rns rp rpc rpl rpo rps rt rtl rtlt rts rcea rcec rceca verify Model Ctrl-alt-shift-s  Show db scheme for current model

Read More

"Premature end of script headers: dispatch.fcgi"终极解决方案

名字够响亮,当然内容也很响亮。哈哈。 现状:    当使用Apache(或其他web server,例如lighttpd),以及fastcgi(或cgi)等来部署rails或python等时,经常会出现以下错误:      Premature end of script headers: dispatch.fcgi 解决方案: 本解决方案是基于Rails+Apache+fastcgi+debian,其他类似。 检查dispatch.fcgi的用户或用户组,以及访问权限,至少定义为755. 检查dispatch.fcgi的第一行的ruby编译器是否正确,很多人开发在windows平台上,而部署则在Linux/Unix平台上,所以将#!C:/ruby.exe改为#  !/usr/bin/ruby。ruby具体在什么位置,输入whereis ruby即可。 不能允许有打印的代码。例如在rails里,坚决不要将p 或puts写到代码里,这样会导致header破坏。其他语言看着办。 如果以上方案均为解决,到dispatch所在的目录下运行 ./dispatch.fcgi看是否正确。如果有什么错误的话,修正即可。 以上提供的4种方案都可以解决这个问题。要是还是不能解决,请将您的case告诉我。 另外,可以参考另一文章:在Debian上部署Rails Apache+fcgi(或FastCgi)

Ruby遍历文件夹

哈哈,这么简单的问题居然也敢拿出来献丑。没办法,天生愚钝吧!实现该功能在其他语言里那就是小菜一碟,当然ruby也是。不多说,贴代码: def traverse_dir(file_path)    if File.directory? file_path      puts "Dir:"+file_path      Dir.foreach(file_path) do |file|        if file!="." and file!=".."        traverse_dir(file_path+"/"+file)        end      end    else      puts "File:"+file_path    end  end  traverse_dir "d:" 太简单了

Ruby不支持中文

一直用Ruby那么久了,但是从来没有像今天一样尴尬。因为我还没有真正意识到ruby不支持Unicode。从接触ruby到现在,都是使用英文,今天偶尔想写个小应用程序来获取一些中文信息,没想到结果是乱码,其实我早应该知道这样的,毕竟不支持Unicode呀。即便如此,我仍然在心里面责备自己太无知了。网上流行了很多包来解决此,而且ruby的作者也说在下一个版本中支持。但是按照ruby这样的速度开发下去,不知道是何年何月呀。 最后再次BS一下自己。

在Debian上部署Rails Apache+fcgi(或FastCgi)

Rails+Apache2+fcgid安装 安装Ruby tar xzvf ruby-1.8.6.tar.gz cd ruby-1.8.6./configure makemake install      检查一下ruby是否安装,输入: ruby -v 安装zlib tar xvzf  zlib-1.2.3.tar.gzcd zlib-1.2.3./configuremakemake install 安装rubygem   tar xzvf rubygems-0.9.4.tgzcd rubygems-0.9.4ruby setup.rb 为了看是否安装上,输入: gem -v Rails gem install rails -y  æœ‰çš„时候可能因为网速问题装不上,请耐心多试记下. 测试 rails testRailscd testRailsruby script/server         会有如下显示: => Booting WEBrick…=> Rails application started on http://0.0.0.0:3000=> Ctrl-C to shutdown

Read More

mongrel启动问题的解决方案

如果使用Mongrel来部署Rails,就不可避免的使用 mongrel_rails start -C mongrel.config   这里mongrel.config是mongrel的配置文件,可以为: —    :config_script:    :environment: development    :pid_file: log/mongrel.pid    :num_processors: 1024    :docroot: public    :timeout: 0    :host: 0.0.0.0    :mime_map:    :port: 3000    :daemon: false    :cwd: /home/linux/projects/mongrel/testapp    :includes:    – mongrel    :debug: false    :log_file: log/mongrel.log   然后到app的根目录下运行上述的命令,恭喜您,你启动成功了.但是有个问题,如果我不在app的根目录下运行呢?系统会给出我们信息: !!! Path to log file not valid: log/mongrel.log   mongrel::start reported an error. Use mongrel_rails mongrel::start -h to get help.   第一眼看见这个错误,觉得非常简单,Mongrels的创始人给出的答案是将相对路径改为绝对路径.也许上述的方法能解决问题,但是我相信仍然有一种情况:即使改为绝对路径,还是出现同样的错误.如果发生上述的错误应该怎么办?不幸的是,上述的问题我已经碰见过,很长时间不得要领.文档看破皮了,还是不能运行.不得已,打开mongrels的源代码看看.最后发现需要指定工作目录,因为工作目录是在log之前验证的.摘录一段代码: ruby 代码 module Mongrel     class Start < GemPlugin::Plugin "/commands"       include Mongrel::Command::Base          def configure         options [           ["-e", "–environment ENV", "Rails environment to run as", :@environment, ENV[‘RAILS_ENV’] || "development"],           ["-d", "–daemonize", "Run daemonized in the background", :@daemon, false],           [‘-p’, ‘–port PORT’, "Which port to bind to", :@port, 3000],           [‘-a’, ‘–address ADDR’, "Address to bind to", :@address, "0.0.0.0"],           [‘-l’, ‘–log FILE’, "Where to write log messages", :@log_file, "log/mongrel.log"],           [‘-P’, ‘–pid FILE’, "Where to write the PID", :@pid_file, "log/mongrel.pid"],           [‘-n’, ‘–num-procs INT’, "Number of processors active before clients denied", :@num_procs, 1024],           [‘-t’, ‘–timeout TIME’, "Timeout all requests after 100th seconds time", :@timeout, 0],           [‘-m’, ‘–mime PATH’, "A YAML file that lists additional MIME types", :@mime_map, nil],           [‘-c’, ‘–chdir PATH’, "Change to dir before starting (will be expanded)", :@cwd, Dir.pwd],           [‘-r’, ‘–root PATH’, "Set the document root (default ‘public’)", :@docroot, "public"],           [‘-B’, ‘–debug’, "Enable debugging mode", :@debug, false],           [‘-C’, ‘–config PATH’, "Use a config file", :@config_file, nil],           [‘-S’, ‘–script PATH’, "Load the given file as an extra config script", :@config_script, nil],           [‘-G’, ‘–generate PATH’, "Generate a config file for use with -C", :@generate, nil],           [”, ‘–user USER’, "User to run as", :@user, nil],           [”, ‘–group GROUP’, "Group to run as", :@group, nil],           [”, ‘–prefix PATH’, "URL prefix for Rails app", :@prefix, nil]         ]       end          def validate         @cwd = File.expand_path(@cwd)         valid_dir? @cwd, "Invalid path to change to during daemon mode: #@cwd"  

Read More

ruby利用mail和sendmail发送邮件

在linux上一般都带有mailx,mail或者sendmail,那么如何利用ruby来发送邮件呢?实现起来并不太难. 思路mailå’Œsendmail都是linux下的命令,也就是说得让ruby调用这些命令,如何调用,那就是 ruby 代码 IO.popen(sendmail_cmd)   如何利用mail或sendmail发送邮件 mail: mailx -s SUBJECT_CONTENT SEND_TO_EMAIL   sendmail: #sendmail -t -v   To:someone@domain.com   From:your address   Subject: your subject   your email text   Ctrl_D   Ruby实现   Emailx: email_to=["to@domail.com"]   cc_to=[""ccc@domail.comm"]  file="attachment-path"    sendmail_cmd="(uuencode  #{file};"     sendmail_cmd<<"cat body)"    sendmail_cmd <<" |mailx -s \"hello\" #{email_to} "     pipe=IO.popen(sendmail_cmd)        sendmail pipe=IO.popen("/usr/sbin/sendmail -t -v","w")   pipe.puts "To: to@domain.com\n"   pipe.puts "From:Admin<admin@domain.com>\n"   pipe.puts "Subject: Subject here\n"   pipe.puts    pipe.puts "hello,this is email text!"      pipe.close_write   问题 å…¶å®žä¸Šé¢çš„实现很简单,不过有几个问题: 对于emailx,如何改变from addresså‘¢ 对于sendmail,如何实现附件呢

ROR发送邮件

用ROR (Ruby On Rails)发送邮件是一个老话题,但是Google一下,会发现很多人都在抱怨无法发送出去,我自己也经历过类似的情况. 官方给出了一篇文档,即How To Send Email With ActionMailer.遗憾的是仍然有很多人说根据该文档配置之后还是发不出去.我也是参考了该文档,最后成功了.总结一下,如果不成功,很有可能是配置的问题. ROR是利用ActionMailer来发送的,而且内部采用Tmail.先看看我的配置: 代码 # Include your application configuration below   ActionMailer::Base.perform_deliveries = true   ActionMailer::Base.raise_delivery_errors = true   ActionMailer::Base.default_charset = "utf-8"   ActionMailer::Base.server_settings = {       :address => "mail.xxxx.com",       :port => 25,       :domain => "www.xxxx.com",       :user_name => "admin@xxxx.com",       :password => "password",       :authentication => :login       }   以上配置非常简单,无非就是配置了邮件服务器的状况,注意一下认证方式就可以了. 根据以上的配置,是可以发送的,也就是官方给的文档关于SMTP是没有错的. 如果按照上面的还是不能发送,首先检查一下是否正确配置改文件.另外检查一下发送人,即from是否正确?何谓正确?邮件地址的域名不要是localhost,例如admin@localhost.com 是不正确的.也正因为此,我自己就吃了一点亏,因为使用http://localhost:3000 来测试的,而from地址优势根据该URI来判断的. 至于带有TLS或认证的,参考官方文档的Sending emails with TLS and/or authentication-only SMTP servers这一部分,据目前了解的情况看,有人成功发送. 其实就是这么简单,只不过出现一点状况,会令人头痛,幸好Rails提供了源代码. 令人欣慰的是,如果你的Rails程序部署在Linux/Unix系统上,而且已经安装了sendmail,只需要将邮件的delivery方式设置为sendmail即可。最后摘录railsçš„sendmail代码: ruby 代码   def perform_delivery_sendmail(mail)          IO.popen("#{sendmail_settings[:location]} #{sendmail_settings[:arguments]}","w+") do |sm|            sm.print(mail.encoded.gsub(/\r/, ”))            sm.flush          end       end