rss


詳細
BAIDUのスナップショットでこの文章を見たのですが、元の文章のアドレスはもう開かないので、回るしかありません.もっと便利にしてください.Sparkleが書いたはずです.ありがとうございます.
Googleでrubyを検索してrssを作る方法を探して、長い間探しても見つからないで、ここ数年、rssはすでにとてもhotの字で、だからrssを提供するrubyのウェブサイトを探して、FT、私が探しているのはrubyがどのようにrssを作ってrailsの中で出力します.その後、やっとどのように書くかが分かったので、コードを残してみんなに幸せをもたらしたいと思っていましたが、googleでこの文章を検索することは不可能だと思います.縁のある人が突然ここに来るかどうか見てみましょう.
まず、私が言いたいのはもう一つの解決策です.typoという有名なblogプログラムにはrss出力のコードがあると思いますので、降りてみましょう.見ると、typoはやはり頭がいいです.rssの本質はxmlなので、typoはcontrollerで必要な内容をloadして、通過します.rxmlの中のxmlbuilderは自分で一つずつ書きます.え?これはあまりにも偏っているでしょう.
次は私が紹介する方法です.もしあなたがまだネット上でrubyがrssを処理するlibを探しているならば、この文章を見てあなたはもう探す必要はありません.Ruby自体はrssの解釈と出力のサポートを内蔵しており、0.9 x/1.0/2.0を同時にサポートしているからです.
くだらないことを言わないで、直接コードに行きましょう.
rubyコード
require 'rss/maker'  
 
ruby
  1. def feed   
  2.      
  3. articles = Article.find :all:order => 'post_date DESC', :limit => 10   
  4.   feed = RSS::Maker.make("2.0"do |maker|   
  5.     maker.channel.title = "Gang of Technology"  
  6.     maker.channel.description = "Gang of Technology site"  
  7.     maker.channel.link = "http://up-u.com"    
  8.     maker.items.do_sort = true    
  9.     articles.each do |article|   
  10.       item = maker.items.new_item   
  11.       item.link = "http://up-u.com/archives/#{article.id}"  
  12.       item.title = article.title   
  13.       item.date = article.post_date   
  14.       item.description = Maruku.new(article.content).to_html   
  15.     end  
  16.   end  
  17.   send_data feed.to_s, :type => "application/rss+xml":disposition => 'inline'   
  18. end  


これは当サイトのrssが出力したリアルコードです.railsに詳しいなら、きっと読めます.でもちょっとコメントしますrssには関係ないので言わないでください.
  • まずrequire 'rss/maker'番です.
  • make("2.0")の2.0は、出力するrssのバージョンで、サポートされている値は0.9、1.0、2.0です.なぜ2.0を使うのかというと、2.0は0.9の新しいバージョンなので、実は1.0は別の家なので、これはよくそれらの歴史を調べなければなりません.
  • maker.channelのtitle、description、linkは3つの必須値ですが、実はrss仕様でdescriptionは必須ではありませんが、ここに記入しないとmakerがエラーを報告します.
  • maker.items.do_sort = trueはitemの時間に従って順番を並べているという意味ですが、実は私がselectを出たときはすでに順番を並べていたので、実は大丈夫かどうかは関係ありません.
  • 次はitemの生成であり、item = maker.items.new_item
  • を呼び出す.
  • rss仕様にはitemには多くの値がありますが、私はここで4つしか選択していません.実はlinkとtitleだけが必要です.dateも出力したほうがいいです.そうしないとrss readerはすべての文章をtodayと見なします.description私は全文を出力しました.私はrss readerで全文を見るのが好きだからです.
  • はrailsの内容についています.どうやって送りますか.send_dataでいいです.ここで注意しなければならないのはsenddataがstringを受け入れていることです.しかし、実際にはstringを伝えなくてもいいですが、javaのように自動的にtoStringを呼び出すことはありません.だから、私たちは明示的に回転しなければなりません.そうしないと、間違って報告されます.railsの設計問題だと思います.またmine typeを指定しなければなりません.:disposition => 'inline'については、senddataのデフォルトはブラウザにダウンロードを強制するので、これは変更しなければなりません.

  • もう一つの実装方法
    rubyコード
    xml.instruct! :xml, :version=>"1.0"    
    xml.rss(:version=>"2.0"){   
      xml.channel{   
        xml.title("RSS")   
        xml.link("http://")   
        xml.description("description")   
        xml.language("zh-cn")   
        for opus in @opus  
          xml.item do  
            xml.title(opus.title)   
            xml.description(opus.description)   
            # rfc822   
            xml.pubDate(opus.created_at.strftime("%a, %d %b %Y %H:%M:%S %z"))   
            xml.link("url")   
          end  
        end  
      }   
    }