Ruby и RubyEE

Ruby и RubyEE в една система

 ln -s /opt/ruby/bin/ruby /usr/bin/ruby_ee
 ln -s /opt/ruby/bin/gem /ust/bin/gem_ee

Инсталиране на RubyGem - Ruby и RubyEE
Прост скрипт за инсталация: /usr/bin/gi
sudo gem install $1
sudo gem_ee install $1

Пример:
gi sinatra

Sinatra - Apache - mod_rails

Хостинг на Sinatra приложение с Apache и mod_rails

Примерен Apache vhost:

<VirtualHost *>
  ServerName [DOMAIN].com
  ServerAlias www.[DOMAIN].com
  DocumentRoot /www/[DOMAIN]/public
</VirtualHost>


config.ru
require 'index'
set :environment, :production
run Sinatra::Application


index.rb
require 'rubygems'
require 'sinatra'

#Home Page
get '/' do
  "Това е всичко...давай напред!"
end


Примерна структура на Sinatra приложение
config.ru
index.rb
lib/
log/
public/
Rakefile
tmp/
views/


Рестартиране на приложението
touch tmp/restart.txt


Може да използвате DreamHost за хостинг. Когато настройвате домейн-а си в DreamHost, просто му кажете да активира Ruby on Rails(mod_rails) и задайте, като директория "/public"

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

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

Стартирай:

  gem server

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

Rails multiple site application theme managment

  before_filter :get_site
  attr_reader :site
  theme :get_theme, :get_theme_site
 
 
  def get_site
    url = request.domain(request.subdomains.size + (request.subdomains.first == 'www' ? 0 : 1))
    @site ||= Site.find_by_url(url) || Site.find(:first, :order => 'id')
  end
 
  def get_theme
    site.theme
  end
 
  def get_theme_site
    site.id.to_s
  end

Още