Rails nice search

Проблема: http://somehost.com/home/index?q=search_string

route:

  map.q '/q/:q', :controller => 'home', :action => 'index', :q => nil  

form:
<% form_tag({:controller => "home", :action => "search"}, :method => "get") do %>
  <%= text_field_tag :q %><br/>
  <%= submit_tag 'Търси' %><br/>
<% end %>	

controller:
  def search
    redirect_to q_url(:q => params[:q])
  end


Резултат: http://somehost.com/q/search_string

bgUrl api - ruby simple example

bgurl.org

def get_bg_url(long_url)
  url = URI.parse("http://bgurl.org/api/links")
  req = Net::HTTP::Post.new(url.path)
  req.set_form_data({'website_url' => long_url})
  http = Net::HTTP.new(url.host, url.port)
  response = http.start {|http| http.request(req) }
  doc = Hpricot::XML(response.body)
  (doc/:link/:permalink).first.innerHTML
end

bgURL api - примерни - request и response

bgurl.org

request.xml
POST http://bgurl.org/api/links

 
<link>
  <website_url>http://www.sharesnippets.com</website_url>
</link>

response.xml
<?xml version="1.0" encoding="UTF-8"?>
<link>
  <website_url>http://www.sharesnippets.com</website_url>
  <permalink>http://bgurl.org/0eWb</permalink>
</link>

Как да прочетем rdoc, за инсталираните локално ruby gems?

Стартирай:

  gem server

Отвори:
http://localhost:8808/

MySQL - замяна съдържание на поле

update dbtable set field = replace(field,'search_string','replace_with '); 

Премахване на .svn директории

Премахване на .svn директории

 find ./ -name ".svn" -type d -exec rm -rf \{} \; 

PHP - sql decode param variables

function sql_decode($param){
  $s = $param;
  $s = str_replace("\\\\", "\\",$s);
  $s = str_replace("\\\"","\"", $s);
  $s = str_replace("\\'","'", $s);
  $s = str_replace("\\`","`", $s);
  $s = str_replace("\\","\\\\", $s);
  $s = str_replace("\"", "\\\"", $s);
  $s = str_replace("'", "\\'", $s);
  $s = str_replace("`", "\\`", $s);

  return $s;
}

FeedBurner Api - извличане статистика за "feed"

app/models/feed_burner.rb

class FeedBurner
  include HTTParty
  base_uri 'feedburner.google.com'  
  format :xml

  def self.get_feed_stats(uri)
    get('/awareness/1.0/GetFeedData', :query => {:uri => uri})       
  end
  ...
end

Controller:
stats = FeedBurner.get_feed_stats("[feed_uri]")

config/environment.rb
...
config.gem "httparty"
...

Използване на константа, като име на модел

Използване на константа/string като име на модел:

Hash с константи:

    rtypes = {
      ...
      "rapps"=>"RentApp",
      "sapps"=>"SaleApp",
      ...   
    }

Използване като имена на модели:
 rtypes.each_pair {|offer_type, model|
   offers = model.constantize.find :all
   ...
 }

Константата може и да не е с точното име на модела. Например SaleApp може да бъде sale_app, тогава става така:
 offers = model.classify.constantize.find :all

Генериране на RSS в Rails сайт/приложение

Примерно генериране на RSS в Rails сайт/приложение. Примера е от кода на sharesnippets.com

Controller:

  def rss
    begin
    user = User.find_by_login(params[:user])
      @page_title = user.login  + " at www.sharesnippets.com"
 
    @posts = Post.find :all, :conditions => {:private => false, :user_id => user.id}, 
:order => "created_at desc"
    respond_to do |format|
      format.xml  { render :layout => false }
    end
    rescue
      flash[:notice] = 'Няма такъв потребител !'
      redirect_to root_url
      return false      
    end  
  end


View: rss.xml.builder
xml.instruct!

xml.rss "version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do
  xml.channel do

    xml.title @page_title
    xml.link root_url
    xml.pubDate CGI.rfc1123_date(@posts.first.updated_at) if @posts.any?
    xml.description @page_title

    @posts.each do |post|
      xml.item do
        xml.title post.title
        xml.link url_for(:only_path => false, :controller => 'posts', 
:action => 'show', :id => post.permalink)
        xml.description post.body.gsub(/\n/, "<br />")
        xml.pubDate CGI.rfc1123_date(post.created_at)
        xml.guid url_for(:only_path => false, :controller => 'posts', 
:action => 'show',:id => post.permalink)
        xml.author post.user.login
      end
    end

  end
end