Ruby

2013年12月26日

このエントリーをはてなブックマークに追加

Ruby 2.1.0 is released

今年も12/25リリースとなった。お疲れ様でした。

We are pleased to announce the release of Ruby 2.1.0.

Ruby 2.1 has many improvements including speed up without severe incompatibilities

自分は得意分野のrpmspec作成と、パッケージビルドを終えた。

ビルド済みRPMはGitHubに置いてあるので、ご自由にどうぞ。インストール手順は下記の通り。

検証環境
  • CentOS 6.5
  • kernel-2.6.32-431.el6.x86_64
事前準備
git clone
$ git clone https://github.com/hansode/ruby-rpm
ruby.rpmはlibyamlに依存しているので、epelをインストールしておく
$ sudo rpm -Uvh http://dlc.wakame.axsh.jp.s3-website-us-east-1.amazonaws.com/epel-release
パッケージインストール
x86_64の場合
$ sudo rpm -ivh ruby-rpm/6/x86_64/ruby-2.1.0-2.el6.x86_64.rpm
i*86の場合
$ sudo rpm -ivh ruby-rpm/6/i386/ruby-2.1.0-2.el6.i386.rpm
あとがき

2.1からはバージョニングポリシーが変わった?

参考文献



編集
@hansode at 10:00|PermalinkComments(0)TrackBack(0)

2011年11月01日

このエントリーをはてなブックマークに追加

インターネット非接続環境でgemパッケージをインストールする必要があった

要件は下記の通り。

  • インストール作業対象は、インターネット非接続環境
  • gemパッケージはbundlerで管理

『恐らくローカルリポジトリを作成出来れば解決出来るだろう』と考え、gemコマンドを調査。


$ gem help commands
GEM commands are:

...
    generate_index    Generates the index files for a gem server directory
...

helpの中にgenerate_indexコマンドを発見。 調査・検証後、ローカルgemリポジトリを作成可能である事が判明した。 下記は、ローカルgemリポジトリ構築手順をまとめたものである。

検証環境
  • Ubuntu 10.04.3 Server LTS
  • ruby 1.8.7
  • rubygems 1.3.7
作業概要

後に登場する"gem generate_index"コマンドは、"gems/"にgemファイルがある事を期待している。 よって、gemsディレクトリを作成し、gemsディレクトリにgemファイルを配置する。

  1. gemsディレクトリ作成
  2. gemsディレクトリにgemファイルを配置
  3. gem generate_indexを実行
作業内容

gemsディレクトリ作成


$ mkdir gems/

gemsディレクトリにgemファイルを配置。サンプルとして bundler を配置。


$ cd gems/
$ wget http://rubygems.org/downloads/bundler-1.0.21.gem
$ cd ../

gem generate_indexを実行


$ gem generate_index

生成されたインデックス、およびメタデータ、階層構造を確認


$ find .
.
./Marshal.4.8
./Marshal.4.8.Z
./gems
./gems/builder-3.0.0.gem
./latest_specs.4.8
./latest_specs.4.8.gz
./prerelease_specs.4.8
./prerelease_specs.4.8.gz
./quick
./quick/Marshal.4.8
./quick/Marshal.4.8/builder-3.0.0.gemspec.rz
./quick/builder-3.0.0.gemspec.rz
./quick/index
./quick/index.rz
./quick/latest_index
./quick/latest_index.rz
./specs.4.8
./specs.4.8.gz
./yaml
./yaml.Z
ローカルリポジトリを使うには

gem sourceコマンドで指定


$ gem source -a file://`pwd`/
$ gem source -a file:///path/to/local-gems/

bundlerを使う場合は、Gemfile


source "file:///path/to/local-gems/"

どうにかして生成したローカルリポジトリをインターネット非接続環境へ配置すれば、 インターネット接続環境のような状態でgemパッケージをインストール出来る。

あとがき

納品物など、ローカルリポジトリ形式で梱包してしまうのは便利かも知れない。

続きを読む


編集
@hansode at 11:30|PermalinkComments(0)TrackBack(0)

2010年04月16日

このエントリーをはてなブックマークに追加

[SMTP][tcpdump] SMTPのデータストリームをダンプ』のRuby版

tcpdumpコマンド + stringsコマンドだとゴミが混じる。
ゴミ掃除とRubyの練習目的に下記スクリプトを書いた。

▼smtpdump.rb

#!/usr/bin/env ruby

require 'pcap'
require 'pcaplet'

port = 25
nic  = 'eth0'

smtpdump    = Pcaplet.new("-n -i #{nic} -s 8192")
smtp_filter = Pcap::Filter.new("tcp port #{port}", smtpdump.capture)
smtpdump.add_filter(smtp_filter)

smtpdump.each_packet do |pkt|
  next if pkt.tcp_data_len == 0
  case pkt.sport
    when port
      prefix = 'S'
    else
      prefix = 'C'
    end
  pkt.tcp_data.to_s.split("\n").each { |line| puts "#{prefix}:#{line}\n" }
end



編集
@hansode at 18:00|PermalinkComments(0)TrackBack(0)

2010年04月13日

このエントリーをはてなブックマークに追加

事のきっかけは、ActionMailerのソースを読みたかった

ActionMailerの調査の為、gemをダウンロード。
興味本位でfileコマンドで確認してみたらtarだった。


作業内容

▼サンプルgemをダウンロード

$ wget http://rubygems.org/downloads/actionmailer-2.3.5.gem

▼gemに対してfileコマンドを実行

$ file actionmailer-2.3.5.gem
actionmailer-2.3.5.gem: tar archive

わお。tarだ。

▼tarアーカイブの中身を覗いてみる

$ tar tvpf actionmailer-2.3.5.gem
-rw-r--r-- wheel/wheel  107087 1970-01-01 09:00 data.tar.gz
-rw-r--r-- wheel/wheel    1397 1970-01-01 09:00 metadata.gz

data.tar.gzとmeta.gzの2ファイルであることが分かる。

▼伸長して、さらにtar玉を覗いてみる

$ mkdir actionmailer-2.3.5
$ tar xvpf actionmailer-2.3.5.gem  -C ./actionmailer-2.3.5/   data.tar.gz
data.tar.gz
tar: data.tar.gz: implausibly old time stamp 1970-01-01 09:00:00
metadata.gz
tar: metadata.gz: implausibly old time stamp 1970-01-01 09:00:00
$ cd actionmailer-2.3.5

$ tar ztvpf data.tar.gz | head
-rw-r--r-- wheel/wheel    3080 1970-01-01 09:00 Rakefile
-rw-r--r-- wheel/wheel     747 1970-01-01 09:00 install.rb
-rw-r--r-- wheel/wheel    4880 1970-01-01 09:00 README
-rw-r--r-- wheel/wheel   13595 1970-01-01 09:00 CHANGELOG
-rw-r--r-- wheel/wheel    1074 1970-01-01 09:00 MIT-LICENSE
-rw-r--r-- wheel/wheel     796 1970-01-01 09:00 lib/action_mailer/adv_attr_accessor.rb
-rw-r--r-- wheel/wheel   28261 1970-01-01 09:00 lib/action_mailer/base.rb
-rw-r--r-- wheel/wheel    4277 1970-01-01 09:00 lib/action_mailer/helpers.rb
-rw-r--r-- wheel/wheel     586 1970-01-01 09:00 lib/action_mailer/mail_helper.rb
-rw-r--r-- wheel/wheel    3830 1970-01-01 09:00 lib/action_mailer/part.rb

$ zcat metadata.gz  | head
--- !ruby/object:Gem::Specification
name: actionmailer
version: !ruby/object:Gem::Version
  version: 2.3.5
platform: ruby
authors:
- David Heinemeier Hansson
autorequire: action_mailer
bindir: bin
cert_chain: []

なるほど。
そして、無事にソースツリーを抜き出せた。




編集
@hansode at 16:30|PermalinkComments(0)TrackBack(0)