Archive for 2月, 2011

Padrino+MongoDB+Herokuを使って、5分でWikiアプリ作成する

Time to Read

5分

ここ数か月、PadrinoというRuby製フレームワークにはまり込んでいるわけですが。

  • 軽量
  • テスト、i18n、各種ヘルパーなど一通りの機能が入っている
  • ベースはSinatraなので、面倒くさいroutes.rbを書かなくてよい
  • なによりザクザク作れて楽しい

そんなPadrinoを草の根でも広げていきたいな~と思い、「Padrino+MongoDB+Heroku」なシンプルなWiki風ウェブアプリケーションの作り方を、入門記事風に書いてみます。

環境はMac OS XやデスクトップLinuxを想定しています。前提として、まず、RubyとRubyGems、Gitは入っていますか? 入っていないならばとりあえず入れておいてください。

Windowsの場合、Getting Started with Heroku on Windows(http://devcenter.heroku.com/articles/windows)という記事が参考になるかもしれません。

(1) Padrinoをインストール

Read the rest of this entry »

 

Ngin X(エンジン テン) – NginXでできる10のこと

Time to Read

5分

1. 特定ディレクトリ以下のファイルを公開する

1
2
3
4
server {
    root /home/udzura/share;
    autoindex on;
}

http://wiki.nginx.org/HttpAutoindexModule

2. ホスト名でサイトを分ける

Read the rest of this entry »

 

Grailsの開発環境を作った – emacsの場合

Time to Read

2分

ゆとりRubyistの僕なんですけど、最近それではいけないと思い、Groovy/Grailsを始めました。しばらく格闘記録でも付けていこうかな~と。

今回は、emacsで環境構築してみます。GMateも微妙にbuggyでちょっと使い続けるのが辛くなってきましたからね。。。

elisp一式をインストール

Read the rest of this entry »

 

Rackで静的サーバをなるべく短いワンライナーで立ち上げる

Time to Read

1分

コメントにもあったこちらの記事も参考にしつつ。

Rack::Server#app を上書きすれば良い。

1
ruby -rrack -e 'Rack::Server.new.tap{|a| def a.app; Rack::Directory.new(".") end }.start'

以上。

* * *

なお、Ruby1.9系であれば ruby -rrubygems -rrack ... みたいな書き方もいいんだけど、1.8系だとそうもいかないので、どうすればいいかというと、OSのパッケージのRackを入れる。

Ubuntu/Debianなら多分

1
sudo aptitude install librack-ruby

こうすれば、 require 'rubygems' なしで直接 require 'rack' できるというわけ。Mac OS Xでどうすればいいかは、使っていないのでよく分からない。site-rubyに入れれば良い?

 

smbclient+Ruby+Open3で、Windowsファイルサーバにファイルをアップする

Time to Read

1分

みなさん! Windowsは好きですか? 僕は普通です。

「社内共有ファイルサーバはWindowsだけど、Railsとかそういうのから、例えば集計結果CSVを送りつけなきゃいけない!」 みたいな時、RubyのSamba関連ライブラリが大変イマイチなので、いっそsmbclientコマンドで送りつけようと思ったときのコードのメモ。

まずはインストール(@Debian、Ubuntu)。

1
aptitude install smbclient

外部コマンドを発行したいとき、こういうインタラクティブシェルがあるコマンドなら、Open3を使うと楽。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
 
require 'rubygems'
require 'open3'
require 'logger'
 
logger = Logger.new(STDERR)
logger.level = Logger::DEBUG
 
logger.info "--- Start putting files... ---"
cmd = '/usr/bin/smbclient -U udzura -W YOURDOMAIN \\\\\\\\file.server\\\\共有フォルダ XXXXXXXX'
Open3.popen3(cmd) do |stdin, stdout, stderr|
  logger.debug "smbclient connect successfully."
  t1 = Thread.new(stdout) {|io| while ln = io.gets; logger.warn '[smbclient] ' + ln end }
  t2 = Thread.new(stderr) {|io| while ln = io.gets; logger.info '[smbclient] ' + ln end }
  logger.debug "smbclient logging thread created."
 
  # main - sending commands to smbclient
  stdin.puts "lcd /home/udzura/ピクチャ"
  stdin.puts "cd dogs"
  dirname = Time.now.strftime'%Y-%m-%d'
  stdin.puts "mkdir target\\#{dirname}"
  stdin.puts "put akubi3.jpg target\\#{dirname}\\akubi3.jpg"
  stdin.puts "exit"
 
  # end jobs
  stdin.close
  sleep 5 # to wait for threads to complete logging
  [t1, t2].each {|t| Thread.kill t }
end
 
logger.info "--- End putting files...   ---"
 
exit

参考