rsync and ssh

rsync and ssh

 rsync -avz --stats -e ssh user@host:/www/* .

301 redirect

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_Host} ^[YourSite.com] [NC]
RewriteRule ^(.*)$ http://[www.YourSite.com]/$1 [L,R=301]

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"

Apache 2.2 performance tunning

ExpiresActive On
ExpiresByType image/gif "access plus 1 weeks"
ExpiresByType image/png "access plus 1 weeks"
ExpiresByType image/jpeg "access plus 1 weeks"
ExpiresByType text/css "access plus 1 weeks"
ExpiresByType text/javascript "access plus 1 weeks"
ExpiresByType application/x-javascript "access plus 1 weeks"
FileETag none
# Deflate
SetOutputFilter DEFLATE 
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css ap
plication/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

bgUrl API - example with RestClient

In this example I use RestClient by Adam Wiggins : http://github.com/adamwiggins/rest-client/tree

require 'rubygems'
require 'rest_client'

def shorten (url)
  response = RestClient.post 'http://bgurl.org/api/links', :website_url => url
  response[/permalink>(.*)<\/permalink>/,1]  
end

Linode VPS, ubuntu 8.04, ruby on rails

Ubuntu 8.04
Ruby on Rails
Linode VPS

apt-get update
apt-get install build-essential
apt-get install phpmyadmin
apt-get install mysql-server mysql-common
apt-get install  zlib1g-dev  libssl-dev libreadline5-dev
apt-get install apache2-prefork-dev libapr1-dev
apt-get install imagemagick
apt-get install gettext
apt-get install subversion git-core
apt-get install ruby1.8 ruby1.8-dev ri1.8
apt-get install libncurses5-dev

ln -s /usr/bin/ruby1.8 /usr/bin/ruby
apt-get install libmysqlclient15-dev
apt-get install libmagick9-dev 
apt-get install libopenssl-ruby1.8


cd /tmp/
wget http://rubyforge.org/frs/download.php/55066/rubygems-1.3.2.tgz
tar xzvf rubygems-1.3.2.tgz 
cd rubygems-1.3.2
ruby setup.rb 
ln -s /usr/bin/gem1.8 /usr/bin/gem
gem sources -a http://gems.github.com
gem install mysql
gem install rails -v 2.3.2
gem install capistrano
gem install rmagick
gem install hpricot
gem install httparty

cd /tmp/
wget http://rubyforge.org/frs/download.php/51100/ruby-enterprise-1.8.6-20090201.tar.gz
tar xzvf ruby-enterprise-1.8.6-20090201.tar.gz 
./ruby-enterprise-1.8.6-20090201/installer
/opt/ruby-enterprise-1.8.6-20090201/bin/passenger-install-apache2-module
ln -s /opt/ruby-enterprise-1.8.6-20090201/ /opt/ruby
/opt/ruby/bin/gem  sources -a http://gems.github.com
/opt/ruby/bin/gem install capistrano
/opt/ruby/bin/gem install rmagick
/opt/ruby/bin/gem install hpricot
/opt/ruby/bin/gem install httparty

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>