Pages

ラベル ruby の投稿を表示しています。 すべての投稿を表示
ラベル ruby の投稿を表示しています。 すべての投稿を表示

2011/07/07

Upstart で god を respawn

ruby でかかれたプロセスライフサイクル管理のフレームワーク god。
 

肝心のgodが止まらないようにUpstartでrespawnさせます。
 

2011/04/25

Chef-Clientを既存Gem環境に影響なくインストール

Chefは便利だが、少なくともRuby+Gems(Chef)まで必須で、もちろん依存するGemsも必要だ。

Rubyを利用していない環境ならともかく、他とお互い干渉しないようにしておきたい。


ただのBundlerの紹介になるが、Chef-Clientを既存環境に影響ないよう使ってみる。

2011/04/01

refinerycms, radiant などをbundleでインストール

railsで製造されたアプリケーションは、gemでインストールしたコマンドを使ってサイトをビルドするタイプのものがある。
refinerycms, radiant などがそういう感じ。
 

たとえばrefinerycmsだとこの4行でインストールOKとあるが。。

gem install refinerycms
refinerycms path/to/my_new_app
cd path/to/my_new_app/
rails server


このやり方は標準で読み込むGEMSがやたらと増えるしバージョン依存とかいやだ。

これをbundlerを使って何とか影響範囲をRaisHome内にとどめてみよう。

富豪的ともいわれるが。
 

2011/03/31

Nginx用の a2ensite, a2dissite がないのでツールを作る

最近ChefのCookbookを触っているが、Rubyをちゃんと読めるほうが都合がよいので練習がてら。

ubuntuなどのdeb系はapache httpdのサイト管理がよく作られており、サイト単位の有効無効を a2ensite, a2dissiteというツールで切り替えるように工夫がされています。

Nginxでもコマンドでサイト管理やりたいなあと思い作成。
 



使い方


3つのメソッド(サブコマンド)を持ちます、オプションなしでたたくと一応使い方を出すようにしました。


  • list:sites-available にあるコンフィグファイルをリストアップ。
    現在有効なものは+(プラス)を、無効なサイトは-(マイナス)を付与して表示。

  • enable {configfile}:sites-enabled にリンクを作成してnginxをリロード。

  • disable {configfile}:sites-enabled からリンクを削除してnginxをリロード。


 


コマンド例


ngsitectl.rb disable default

とか

ngctlにエイリアスして
ngctl enable example.com

このようにします。


リストはこんな感じで出します。
# ngctl list
- example.com
+ 8082
+ rprox.conf
+ 8081
- default
+ 8083
+ ssl_rprox.conf




リロードがいやな人はコメントアウトしたりgracefulに相当する手続きがあるのでそれを変わりに仕込みましょう。
この辺は改良の余地が大きいですね。
 

コード


自分でつかうのでGithubにも置いてます。
https://github.com/sawanoboly/optools/blob/master/ngsitectl.rb
うちはハイライトしてないからGithubのほうが見やすいですね。

そうそう、1.9.2 p180 で作っているので他のVerについては動くか見てないです。

ngsitectl.rb
#!/usr/bin/env ruby
# encording: utf-8

## Const
AvailDir = "/etc/nginx/sites-available/"
EnableDir = "/etc/nginx/sites-enabled/"


# list up all site and add "+" for enable sites.
def list(sitename)
sitesall = Dir.entries(AvailDir)

# exclude dots
sites = sitesall.select{|elem| elem != "." and elem !=".."}

# enabled sites check.
sites.each do |site|
if File.exist?(EnableDir + site) then
puts "+ " + site
else
puts "- " + site
# File.symlink(AvailDir + site, EnableDir + site)
end
end
end

def enable(sitename)
if File.exist?(EnableDir + sitename) then
puts "Site:" + sitename + " is already enabled.\nDo nothing."
elsif File.exist?(AvailDir + sitename) then
puts "enable: " + sitename
File.symlink(AvailDir + sitename, EnableDir + sitename)
puts `/etc/init.d/nginx reload`
else
puts "Site:" + sitename + " Config not found."
end
list(sitename)
end

def disable(sitename)
if File.exist?(AvailDir + sitename) then
if File.exist?(EnableDir + sitename) then
puts "disable: " + sitename
File.unlink(EnableDir + sitename)
puts `/etc/init.d/nginx reload`
else
puts "Site:" + sitename + " is already disabled.\nDo nothing."
end
else
puts "Site:" + sitename + " Config not found."
end
list(sitename)
end


begin
method(ARGV[0]).call(ARGV[1])
rescue TypeError => ex then
puts <<"HEREDOCS"
Nginx site control script.
Usage:
list: list all available sites
enable {sitename}: enable site and reload nginx
disable {sitename}: disable site and reload nginx
HEREDOCS
rescue => ex
puts "Exception " + "#{ex.class}"
puts "#{ex.message}"
puts
puts <<"HEREDOCS"
Nginx site control script.
Usage:
list: list all available sites
enable {sitename}: enable site and reload nginx
disable {sitename}: disable site and reload nginx
HEREDOCS
end

2011/03/22

さくらVPSのUbuntu10.10にRuby1.9.2

サーバにOSをインストール(過去記事参照)したら、次に入れるのはRubyだろう。
Chef-clientにするためだ。

最近やっている手順をメモっておく。
※rubyのパッチバージョンは適当に読み替えで。
 

2010/11/11

Redmineをサーバーカウボーイにセットアップ、ワンコインrailsでプロジェクト 管理

ファーストサーバのサーバーカウボーイから PHPバージョンアップのお知らせ とニュースが出ています。
 

phpが5.1から5.2になったことで、testlinkやらmagentoやら動作します。
 




 


私はサーバーカウボーイの開発もやっているので当然知っているのですが、、、実はそれに便乗してRuby対応もパワーアップしています。
 


どのくらいRuby対応が進んだかって言うと、Redmineが動くくらい、それも1.0.x。
 

↓ということでセットアップしてみました。

Redmine on cowboy
 

まだDBの流し込みなど手動でやらなければなりませんが、railsがしっかり使えるのがわかります。
http://demo.cowboyhacks.com/redmine/
 

この環境、暫くは guest / guest でログインできるようにしておくので、サーバーカウボーイみたいな廉価系サーバでのrailsって使用感どうよと思ったら試してみてはどうでしょうか。
 

手順はまた今度書きますが、興味があったらツイッターとかで聞いてくれてもOK。
 

2010/11/02

railsアプリケーションでvenderにgemsを入れる

railsアプリケーションをデプロイしたり移行する際、目的のサーバに必要なgemsが無く、勝手にインストールも難しいとする。
 

とりあえずgemsがインストール済みの環境でunpackしてから持っていけば使える。

{RAILS_ROOT}/vender/gems
に移動して、
gem unpack hogehoge

とすればgemsのファイル群が展開されるのでそのまま持っていく。
 
 

rubygemsすらも無いという環境だったらば、rubygems.rbとrubygems/を{RAILS_ROOT}に置けばWebrickなら動く。
 

2010/09/26

GAEでjruby、windowsからデプロイ・後編

前回はgoogle-appengine のgemを入れたとこまでやったので、その後。
 
 

続きと言いつつ、windowsでやるなら最初からjrubyでやったほうが楽ぽいのでローカルからjruby、こんな環境で。


C:\ruby\jruby-1.5.2\bin\jruby --version
jruby 1.5.2 (ruby 1.8.7 patchlevel 249) (2010-08-20 1c5e29d) (Java HotSpot(TM) Client VM 1.6.0_21) [x86-java]

 
 

2010/09/24

GAEでjruby、windowsからデプロイ・前編

以前は色々と面倒だったが、google-appengineというgemでJrubyをGAEに持っていきやすくなったと聞いてwindowsからアプリのデプロイでもしようとしてみました。
 


まずrubyを入れて、gemを使えるまで


rubyからかよ!と思うかもですが...
jrubyは入れてたのですが、参考サイトがjrubyでなくて普通のruby(cruby)だったので、それにならって普通のrubyをWindows7に入れる所から。
 


Rubyのダウンロード
http://www.ruby-lang.org/ja/downloads/



mswin32版のバイナリをいれます。
一番下にあった1.9.2だとgemsのpathエラーとかになって困ったので1.9.1にします。

ZIPを展開してC:\ruby\ruby1.9.1\ に配置、パスは必要になったら通そう。
pythonとかrubyはとりあえず置けばバージョン別につかえていいよね。
 

さてgemsが要る。