進・日進月歩

IT, Jazz, study, engineering, すべての真実とクリエイティビティのために

Archive for May, 2010

自宅サーバでgyazoをしよう

  • Filed under: 雑記
Tuesday
May 18,2010

実際はホスティングなんですが。

gyazoって知ってますか?masuiさんが開発された驚異的な便利ツールです。
実はこれGPLでオープンソースになっています。

自宅サーバでgyazoを運用するためのtipsです。
当方macなので、クライアントがmacでserver側はrack(rubyのアプリケーションコンテナ)を使うようにしています。

さて、自宅サーバでgyazoをするメリットとは。

  • 情報漏洩リスクが低い
  • basic認証かけたりできる
  • 社内の情報共有ツールとして使う
  • ログがとれる

などなどでしょうか。

情報漏洩リスクは、低いと言えば低いんですがgyazo.comは本質的には情報漏洩リスクがあります。
どっかの会社ではあまり気にしないで使われてるんですが、twitterがコンプライアンス違反ならこっちの方が余程リスクが高い気もします・・・・(細かい話はまた別で

だから、自分で運用するgyazoをたてましょうということです。

ちょっと運用上の問題からオリジナルのgyazoから多少の変更をしています。

手順は

  1. 私のgithubからチェックアウト
  2. クライアント側のパスワードとサーバのアドレス設定
  3. サーバ側にrackをデプロイ

こんな感じです。

githubからチェックアウト

私のgithubからチェックアウトするかフォークするかしてください。

git clone git://github.com/harajune/Gyazo.git

するとソースが落ちてきます。

クライアント側の設定

ほとんどの人はwindowsなんでしょうけど、自分はmacなのでmacの説明。
一応windowsもソースみたんですが多分簡単に出来そうな気がします。

以下の要領でクライアントの設定をしてください。

cd Gyazo.app/Contents/Resources
cp config.sample.rb config.rb
vi config.rb

viじゃなくてもいいですが。config.rbを以下のように編集します。

HOST=”your.domain.com”
CGI=”/upload”

CGIの方はアップロードの時に使うパスです。一応デフォルトがこれです。

これでクライアントの設定は終了。

サーバにrackを設置

アプリケーションコンテナは好きなのを使ってください。私はpassengerを好んで使っています。

Serverディレクトリ以下を適当なrackコンテナの場所に設置してください。basic認証とかしたく無ければこれで終了。

終わり

以上です。open Gyazo.app とかしてgyazoってみてください。
たぶんちゃんと動くはずです。

実はちょっとだけ改造してあります

本家gyazoはCGIでの運用が前提になっているので個人的には扱いにくいです・・・・
ので、harajuneバージョンではrackに対応させてあります。

まぁ大した差はないんですが、ほとんどのrubyアプリケーションコンテナがrackに対応していますし、cgiって個人的には運用が面倒なのでこちらの方がいい気がしています。

というわけで、楽しいgyazoライフを!

redmineをruby1.9で動かす

  • Filed under: 雑記
Tuesday
May 11,2010

とりあえずな対応ですが・・・・

使ってる環境がruby1.9.2trunkとrails3.0betaなんですが、残念ながらredmineはrails2.3.5とruby1.8.xでしか動かない。

とりあえず動かしてみたところ、基本的にひっかかるのは文字コード周りであることがわかったためちょっと修正してみたらだいたい動く感じになりました。

ポイントは

  • gitを使う
  • rails2.3.5をvendor/railsに入れる
  • Stringを拡張する
  • Encoding.external_encodingをUTF-8にする
  • postやgetの値paramsを全部force_encoding("UTF-8")する

です。

gitを使う

redmineを直接いじるのでバージョン管理する方がおすすめです。

git clone http://github.com/edavis10/redmine.git

このgitリポジトリはofficialミラーだそうです。

rails2.3.5をvendor/railsに入れる

git submoduleが便利です。

git submodule add http://github.com/rails/rails.git ./vendor/rails

そして、railsの中身をv2.3.5にします。

cd vendor/rails/
git checkout -b v235 v2.3.5

これでok。

Stringを拡張する

String.eachが1.9では無くなっています。代わりにeach_lineを使えばいいんですが、全部書き換えるのが面倒なので、config/environment.rbに書いちゃいます。

config/environment.rb

CODE:
  1. class String
  2. def each(*args)
  3. self.each_line(*args)
  4. end
  5. end

class String
def each(*args)
self.each_line(*args)
end
end

Encoding.external_encodingをUTF-8にする

いらないかもしれない。config/environment.rbに書き込みます。

config/environment.rb

Encoding.default_external = "UTF-8"
postやgetの値paramsを全部force_encoding("UTF-8")する
ここ一番きもです。app/controllers/application.rbにparams全部にutf8を設定します。

app/controllers/application_controller.rb

CODE:
  1. before_filter :params_filter
  2.  
  3. def params_filter
  4. self.utf8nize(params)
  5.  
  6. end
  7.  
  8. def utf8nize(obj)
  9. if obj.is_a? String
  10. obj.force_encoding("UTF-8")
  11. elsif obj.is_a? Hash
  12. obj.each {|key, val|
  13. obj[key] = self.utf8nize(val)
  14. }
  15. elsif obj.is_a? Array
  16. obj.map {|val| self.utf8nize(val)}
  17. else
  18. obj
  19. end
  20. end

だいたいこんな感じでruby1.9でもredmineが動くようになりました。

とりあえず動かないところ見つける度に直してるのであまり網羅的ではないかも。

一応githubでコードは晒してあります

  • Comments Off
  • about me

    原田 惇

    応用数学や統計、ITなどを利用していろんなことをしています。
    自己紹介はこちら

    adsense

    amazonお勧め

    Recent Posts


    Recent Comments


    Twitter



    Archives


    Meta