misc:software:ruby

misc:software:ruby

参考サイト

準備

apt-cyg install git gcc-core  gcc-g++ make zlib-devel curl \
                autoconf  libiconv rsync patch unzip openssh openssl-devel \
                libxml2-devel libxslt-devel  libffi-devel libgdbm-devel

rbenvとruby-buildの導入(zsh向け)

git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc

rubyのインストール

rbenv install 2.1.1
rbenv global 2.1.1
rbenv rehash

gemの設定

gemインストール時に毎度rehashを入力しなくてすむようにする

gem install rbenv-rehash

便利なgem

gem install bundler

child_info_fork::abort: address space needed by ... の場合

find ~ -name '*.so' > /usr/bin/rebase_so.lst
/bin/rebaseall -T /bin/rebase_so.lst -v
exit

ruby 1.9.* の導入方法

Windows (Cygwin)

ツールの用意

Cygwin の setup.exe から以下のプログラムをインストールする。

ソースファイルの用意

ダウンロード のミラーサイトからソースを取得して展開する。ruby-1.9.3-p0.tar.gz を例にとると展開はつぎのようにする。

$ tar zxf ruby-1.9.3-p0.tar.gz

インストール

cd ruby-1.9.3-p0
./configure --enable-shared
make
make install
参考文献

Ruby Install Guide::Cygwin (ソースから)

windows の環境変数の設定

path に以下の文字列を追加する。

;c:\cygwin\usr\sbin;c:\cygwin\usr\local\bin;c:\cygwin\sbin;c:\cygwin\bin

Linux (Ubuntu)

RVM: Ruby Version Manager - RVM Ruby Version Manager - Documentation を使う


html と docbook 向け空白除去ツール

hpricot の導入

hpricot を使いながら、全角文字間にある半角空白を削除する。hpricot を導入するには RubyForge: RubyGems: ファイルリスト から rubygems をダウンロードして以下のようにコマンドを入力する。ここでは仮に rubygems-1.8.12.tgz を入手することとする。

$ tar -zxvf rubygems-1.8.12.tgz 
$ cd rubygems-1.8.12
$ ruby setup.rb
$ gem install hpricot

ruby 1.9.* の導入

上記の ruby 1.9.* の導入方法を参照すること。

p と para 要素の不要な空白を取り除く

以下のスクリプトを用いれば、p と para 要素の不要な空白を取り除く。

#! ruby
# -*- Encoding: utf-8 -*-
# utf-8 で保存しないと置換に失敗する

# ruby 1.9.3p0 (2011-10-30 revision 33570)


# invalid byte sequence in Windows-31J を回避する
Encoding.default_external="utf-8"

require 'rubygems'
require 'hpricot'


if ("-o" == ARGV[0].to_s)
        filename = ARGV[1].to_s
        overwrite = 1
else
        filename = ARGV[0].to_s
        overwrite = nil
end

doc = Hpricot(File.open(filename).read)

## for html and docbook
(doc/:p + doc/:para ).each do |elm|
  # ascii 文字以外の間にある半角空白一つを取り除く
  elm.inner_html =  elm.inner_html.gsub(/(?<=[^\x00-\x7f]) (?=[^\x00-\x7f])/, '')

  # 要素内の前後の空白を削除する
  elm.inner_html =  elm.inner_html.gsub(/\A\s+/, '').gsub(/\s+\Z/, '')
end


if (overwrite == nil)
        print doc.to_html
else
        foo = File.open(filename,'w')
        foo.print doc.to_html
        foo.close
end

上記のソースを remove_excessive_spaces_in_para.rb というファイル名で保存した場合、 つぎのようにコマンドを入力する。

ruby remove_excessive_spaces_in_para.rb filename

filename について不要な空白を取り除き、その結果を標準出力に出力する

ruby remove_excessive_spaces_in_para.rb -o filename

filename について不要な空白を取り除き、その結果を filename に上書きする

p と para, li と listitem, h1 と chapter 要素等の不要な空白を取り除く

#! ruby
# -*- Encoding: utf-8 -*-
# utf-8 で保存しないと置換に失敗する

# ruby 1.9.3p0 (2011-10-30 revision 33570)


# invalid byte sequence in Windows-31J を回避する
Encoding.default_external="utf-8"

require 'rubygems'
require 'hpricot'


if ("-o" == ARGV[0].to_s)
        filename = ARGV[1].to_s
        overwrite = 1
else
        filename = ARGV[0].to_s
        overwrite = nil
end

doc = Hpricot(File.open(filename).read)

## for html and docbook
(doc/:p + doc/:para \
+ doc/:h1 + doc/:h2 + doc/:h3 + doc/:chapter + doc/:title + doc/:section \
+ doc/:li + doc/:listitem ).each do |elm|
  # ascii 文字以外の間にある半角空白一つを取り除く
  elm.inner_html =  elm.inner_html.gsub(/(?<=[^\x00-\x7f]) (?=[^\x00-\x7f])/, '')

  # 要素内の前後の空白を削除する
  elm.inner_html =  elm.inner_html.gsub(/\A\s+/, '').gsub(/\s+\Z/, '')
end


if (overwrite == nil)
        print doc.to_html
else
        foo = File.open(filename,'w')
        foo.print doc.to_html
        foo.close
end
ruby remove_excessive_spaces.rb filename

filename について不要な空白を取り除き、その結果を標準出力に出力する

ruby remove_excessive_spaces.rb -o filename

filename について不要な空白を取り除き、その結果を filename に上書きする

eventmachineのインストール

コメントにもあるとおり、git へのパスを追加すること。eventmachine.gemspec で git が使われるために、git が見つからなければ eventmachine のインストールに失敗する。msys2を使っているならばこのように書けば良い。

set path=%path%;C:\msys64\usr\bin

nokogiri のインストール

RubyGemsを更新しておくこと。


Last modified : 2014/11/23 12:17:53 JST
blechmusik (blechmusik@gmail.com)