ruby

初めてのpull request

Githubを利用してpull requestを送ったら受け取ってもらえてとてもうれしかったです。 今後も続けていきたいのでなんでpull requestを送ったのか思いを残しておきます。 どんなpull requestを送ったのか。 em-websocket-clientで利用されているWebSocketのバ…

Thorで書いたタスクのテストをする方法

Thorでタスクを書くとそのメソッドが普通のRubyのようには呼べません。それでもやっぱりテストは書きたいのでThorのspecをいろいろ見てたらありました。 # encoding: utf-8 require "rubygems" require "thor" require "rspec" require "stringio" class Sam…

extendの使い方

今まではincludeは全てのインスタンスに対して機能を追加したいときに利用して、extendは特定のインスタンスのみに機能を追加したい場合に使うものと思っていたけどextendはクラスメソッドを追加したいときにも使える事がわかったので、メモしておく。 modul…

kaminariでpaginationを実装してみた

結構簡単に実装できました(基本的なとこしか触ってないけど)

rails3でcucumber-rails0.4.0.beta1を使うとちょっと大変だった

Rails(3.0.3)からcucumber-rails(0.4.0.beta1)を使うまでが慣れてなくて大変だったのでメモしておく。 railsプロジェクト作成 $ r new hoge -d mysql ※ r = rails Gemfile編集 group :test do gem 'rspec-rails', '~> 2.2.0' gem 'webrat', '~> 0.7.2' gem '…

[http://wiki.opscode.com/display/chef/Chef+Basics:title=Chef Basics]を訳しました

Chefを使うならどのような機能をもっているか把握するべきです。このページでは機能の概要を説明し、それらの詳細のリンクがついています。 Modeling Your Infrastructure Nodes nodeはChef-clientを実行するhostです。Chefからみたnodeの主な役割は変数と実…

Anatomy of a Chef Runの訳

Anatomy of a Chef Runを訳しています。 Anatomy of a Chef Run Chefを動かすならChef-clientの実行の仕組みは覚えておいた方がいいですよ。 Convergence Chef-clientやChef-soloでプロセスを呼んだときは"Convergence"リソースを呼ぶ必要があります。Conver…

Architectureの訳

Architectureを訳してみます。 Server Architecture Chef-serverは以下の機能から成り立っています。 Chef server WebUI, node, clientからHTTP API リクエストを受け付ける Chef server web ui WebベースのChef-server管理ツール。 CouchDB Chef serverのデ…

Chef-clientの訳

Chef-clientを訳してみます。 Chef Client Chef-clientはChefができることを大体どこでも実行できます。Chef-clientは署名付きリクエストをREST形式でChef-serverに送り、COOKBOOKをコンパイルして実行します。 Clients do work for one or many Nodes Chef-…

Rspec 2.2を触っての変化

ちょっとだけ触った。覚えているうちに書いておく。 コマンドがspec->rspecに rspecたたいときにカレントディレクトリ以下のlibとspecがLOAD_PATHに自動で加わる テスト対象ファイルを呼び出すのが簡単 なぜかwikiのとおりautotestが走らない(PROJECT_ROOTの…

Net::SCPはあまり利用しないようにしよう

便利でよく使っているのですが極力使わないようにしようと思います。 30Mを超えたあたりからうまいことSCPのsessionが切れなくなる compression, rekey_packet_limit, rekey_blocks_limitを設定してもだめ Net::FTPだとうまくいくんですよねぇ。

APIの認証について

pemっていうファイルで認証しているのはなんとなくわかる。このなんとなくを解消したいと思う。本エントリはWikiの誤訳だと思ってほしいです。 API Clients nodeデータはChef serverからの認証リクエストによって別々に管理されており、それはすなわちAPI Cl…

ファイルのコピーを試してみました

Chefでcookbook内でファイルをコピーしてみました。サーバ上のファイルをコピーするときと利用するリソースが違うのでまとめておきます。 サーバ上のファイルをコピーする場合 以下のような設定でできる気がします。 file "/tmp/pochi.txt" do content IO.re…

Passenger利用の際にApacheの設定ファイルに追加するもの

PassengerRuby Rubyのパス ex) /usr/bin/ruby PassengerRoot Passengerのパス ex) /Library/Ruby/Gems/1.8/gems/passenger-2.2.15/ PassengerMaxPoolSize Railsの最大インスタンス数 ex) 10 PassengerPoolIdleTime passengerによって生成されたインスタンス…

templateリソースを試しました

前回の続きをやります。まずはchef-client呼び出して"hello, chef!"ですかね。 Hello, chef 表示専用cookbookを作ります。 $ knife cookbook create MESSAGE作成されたMESSAGEのディレクトリにいき、${MESSAGE_DIR}/recipes/default.rbを以下のように記述し…

webuiのパスワード忘れてしまったとき

忘れたときにした対応をメモ。 コードをいじる ${chef-server-webui}/app/controllers/user.rbっていうとこに以下のメソッドがある。 def login_exec begin @user = Chef::WebUIUser.load(params[:name]) raise(Unauthorized, "Wrong username or password."…

Apacheをchef経由でインストールできるようにする

運用管理ツール?「Chef」をいろいろ使ってみますの続きです。Apacheをchef経由でインストールできるとこまでがんばりたいです。 復習 前回やったとこは、以下のことです。 Chef-Clientをインストール Chef-Serverをインストール Chef-Serverを動かしてChef-S…

運用管理ツール?「Chef」をいろいろ使ってみます

Puppetとよく比較されるChefですが個人的にはPuppetの書き方がどうしてもなじめなかったのでChefをインストールしてみました。ChefのWikiでインストール方法に書いてあるのでそこまではスキップします。(couchDBとかapache-solrとかRabbitMQとかMerbとか結…

初めてProxy経由でリクエスト送ったから記念にプログラム書いておこう

livedoorさんが提供しているお天気APIをプロキシ経由で利用してみた。 require 'net/http' uri = URI.parse('http://weather.livedoor.com/forecast/webservice/rest/v1') proxy = Net::HTTP::Proxy('xxx.xxx.xxx.xxx', '8080') req = proxy.new(uri.host) r…

rubyのデフォルトを1.9.1にした

rvm使ってますがとうとうデフォルトを1.9.1にしました。 やりかたは以下。 rvm 1.9.1 --default

Thorってなんなんだろう。

Rails3.0で利用されているThorだけど、まだあまり情報ってないようにおもう。 一番詳しいのは、多分リンク先の記事です。(2010/3/13時点) Thorってなんなの?yet another rakeなの?ただ、僕が前の記事であげたgeneratorの仕組みを解読するでは、 railsコマ…

Net::HTTP

Net::HTTPでbodyにデータつめるときはset_form_data使ったほうがいいよ! OAuthの認証エラーで2日はまった原因がNet::HTTP.post(url, body, header)につめるデータが違っていたせいだった。set_form_dataの例 request = Net::HTTP::POST.new(path, headers)…