Time to Read
1分
理由は、NginXのhttp_dav-moduleが、PROPFINDなど一部のWebdavメソッドをサポートしていないため。
メソッドによってfastcgiでwebdav.cgiにリクエストを振る、などの手法も紹介されていましたが、それをするなら全リクエストをwebdav.cgiに振ってしまえばいいと思いました。
gitサーバをhttp(s)で公開する際は、素直にApache2、lighttpdなどを利用しましょう。。
参考
Apacheの場合の手順:
1分
理由は、NginXのhttp_dav-moduleが、PROPFINDなど一部のWebdavメソッドをサポートしていないため。
メソッドによってfastcgiでwebdav.cgiにリクエストを振る、などの手法も紹介されていましたが、それをするなら全リクエストをwebdav.cgiに振ってしまえばいいと思いました。
gitサーバをhttp(s)で公開する際は、素直にApache2、lighttpdなどを利用しましょう。。
Apacheの場合の手順:
3月 22
Posted by udzura in Facebook, OpenID, Ruby, Sinatra, Twitter | No Comments ![]()
![]()
![]()
![]()
![]()
6~8分
今回は最終成果物がSinatraの1-filerなので、bundlerを使わずにRubyGemsを管理する。なので、素直にインストール。今回使うものを全部入れておく(というか、OmnuAuthの依存関係で色々入ってくる)。
1 | gem install sinatra omniauth warden_omniauth |
1分
Padrino Frameworkで、カスタムクラスなどを規約と外れた場所に置きたい場合。
以下のファイルパスは「Padrino.root」からの相対パスと考えてほしい。基本的に、 config/boot.rb に起動前/起動直後フックを書くことができる。
lib 以下に置きたい実は最近のPadrinoは、 lib/**/*.rb を自動的にロードしてくれる。なので何も考えずに置いとけば良い。
app/hoge 以下に置きたいconfig/boot.rb の中の Padrino.before_load で設定。Padrino.require_dependencies を宣言するだけ。
おまじない的に Padrino.set_load_paths もしとくといいんじゃないかな。
1 2 3 4 5 6 7 | ## # Add here your before load hooks # Padrino.before_load do Padrino.require_dependencies(Padrino.root + "/app/hoge/**/*.rb") Padrino.set_load_paths(Padrino.root + "/app/hoge") end |
config/initializers/*.rb を最後にロードしたいPadrino.after_load に書けば確実に最後に読み込んでくれる。
1 2 3 4 5 6 | ## # Add here your after load hooks # Padrino.after_load do Padrino.require_dependencies(Padrino.root + "/config/initializers/**/*.rb") end |
この場合、 $LOAD_PATH はいじられない。
1分
ずいぶん前の話ですが、
こういう記事を書いたんですけど、この記事ではaptで入れてますが、最近は
1 2 | gem install gtk2 gem install gtkmozembed |
と言う風に、Rubygemsからインストールも出来るようです。bundlerなどと連携して管理するのが楽になりました……。
この際、いくつかヘッダが必要になります。Ubuntu/Debianの場合、gtk2は参考ページのとおり libgtk2.0-dev でいいんですが、gtkmozembed gemは、
xulrunner-dev
パッケージが必要になります。
libxul-embedding-unstable is not found. libxul-embedding is not found. xulrunner-gtkmozembed is not found. firefox-gtkmozembed is not found. seamonkey-gtkmozembed is not found. mozilla-gtkmozembed is not found. No gtkmozembed is found. Abort.
インストール失敗時にこういうメッセージが表示されますが、「libxul-embedding」は Fedora 等向けのパッケージ名です。要注意。
Ruby1.8.7、1.9.2、REE、などでコンパイルを確認しています。ただ、一番安定するのは 1.8.7 のようです…。
30秒
30秒
(ry
1 | p wbs_request(:GET, 'http://blog.udzura.jp/', :s => 'Ruby') |
1 | p wbs_request(:POST, 'http://www.google.com/', :q => 'Ruby') |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | require 'net/http' def wbs_request(method, uri_string, data={}) uri = URI.parse(uri_string) uri.path = "/" if uri.path.empty? http = Net::HTTP.new(uri.host) case method.to_s.downcase.to_sym when :get query_string = URI.encode(data.to_a.map{|(k, v)| "#{k}=#{v}"}.join("&")) return http.get(uri.path + "?" + query_string).body when :post return http.post(uri.path, data).body when :put, :delete, :head raise NotImplementedError, "Not yet supported" else raise ArgumentError, "Unsupported http method" end end |
require 'open-uri'; open(...) とやろうとしたがPOSTができなかった。会社の先輩から指摘があったんですが、関数()の8行目が
8 | query_string = data.to_a.map{|(k, v)| "#{k}=#{v}"}.join("&") |
となっており、いわゆるURLエンコードがされていませんでした。お詫びして修正致します。というか、下手に車輪の再発明をするとこういうつまらないミスをしますよ、と言う教訓ですn(ry
Curbという、libcurlのRubyバインディングがあるのは知っていました。一応使ってみました。
1 2 | sudo aptitude install libcurl4-openssl-dev sudo gem install curb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | require 'rubygems' require 'curb' def wbs_request(method, uri_string, data={}) query_string = URI.encode(data.to_a.map{|(k, v)| "#{k}=#{v}"}.join("&")) case meth = method.to_s.downcase.to_sym when :head return Curl::Easy.send("http_#{meth}", uri_string + "?" + query_string).header_str when :get, :delete return Curl::Easy.send("http_#{meth}", uri_string + "?" + query_string).body_str when :post, :put return Curl::Easy.send("http_#{meth}", uri_string, query_string).body_str else raise ArgumentError, "Unsupported http method" end end |
行数はあまり変わりませんが、put、delete、headなどにも簡単に対応出来たので対応しました。良かったですね。これならRESTful APIのテストにも使えますね。
Curbはlibcurlの機能(Basic認証とか)が使えるみたいなので、むしろ複雑なことをする方が向いているようです。
You are currently browsing the archives for 3月, 2011
Arclite theme by digitalnature | powered by WordPress