カテゴリー「Ruby」の66件の記事

2015/04/09

「今日の名言」というWebサイトを作ってみました。

データベースに登録した偉人たちの名言をランダムに表示します。
再読み込みするたびに名言が変わるようになっています。

現在、70個ほど登録してありますが、これから時間を見つけてゆっくり増やしていこうと思いますので、たまに見にきてください。

今日の名言

さて、今日は次女の入学式。
長女が生徒代表であいさつするとのことで、それを聞くのがとても楽しみです。

次女と長女の晴れ舞台を一度に楽しめるなんて、いい経験だな~。

| | コメント (0) | トラックバック (0)

2013/06/07

第77回オープンソースサロン

今日は以下のテーマで発表されています。

「Ruby + 化学物質管理システム」
~最適なシステムを目指したお客様との取組み~

講演者

・橋本 龍樹(島根大学医学部 臨床看護学講座)
・槇原 綾子(株式会社テクノプロジェクト)

概要

島根大学医学部にて2011年6月からRuby on Railsにて開発した
アプリケーション、化学物質管理システムが運用されています。
システム利用者代表として開発当初から参加して頂いている橋本先生と
共に開発経緯から導入・保守フェーズの状況まで、ユーザ・開発者
それぞれの立場でご紹介致します。

開発の経緯から設計やテストの手順を説明して下さっているので、これからの業務に役立ちそう。

また、少々発表慣れしておられない感じがイイ!!

松江では、しまねOSS協議会が主催するオープンソースサロンにて色々なテーマでオープンソースソフトウェアに関する情報提供を行っています。
もし、興味のある方がおられましたら、下記URLをご覧頂き、松江オープンソースラボまで足を運んでみられてはいかがでしょうか?

しまねOSS協議会

| | コメント (0) | トラックバック (0)

2013/04/05

Windows + Ruby + Webrick = ERROR CGIHandler

長らく更新しないので、すっかりアクセス数が減ってしまったブログを更新してみます。

今回は、WindowsでRubyを使うときに、以下のサイトからダウンロードしたものを使って WebrickでWebサーバーを立ち上げるとエラーで動かなかったという問題を解決する手順を 書いてみます。

http://www.garbagecollect.jp/ruby/mswin32/ja/download/release.html

使用するRubyのソースコードは以下のとおりで、ファイル名は「index.rb」とします。

require 'rubygems'

puts <<EOF
Content-Type: text/html

<html>
<body>
  Test.
</body>
</html>
EOF

これをWebrickを使ったWebサーバでブラウザから読み込んでみました。
詳細については下記URLが参考になると思います。

http://jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners

すると以下のエラーが出て、動きませんでした。

[2013-04-05 05:31:38] ERROR CGIHandler: C:/html/index.rb:
c:/ruby/lib/ruby/1.9.1/rubygems/config_file.rb:56:in `join': can't convert nil into String (TypeError)
        from c:/ruby/lib/ruby/1.9.1/rubygems/config_file.rb:56:in `'
        from c:/ruby/lib/ruby/1.9.1/rubygems/config_file.rb:28:in `'
        from :29:in `require'
        from :29:in `require'
        from c:/ruby/lib/ruby/1.9.1/rubygems.rb:1110:in `'
        from :29:in `require'
        from :29:in `require'
        from C:/html/index.rb:1:in `
' [2013-04-05 05:31:38] ERROR CGIHandler: C:/html/index.rb exit with 1 [2013-04-05 05:31:38] ERROR Premature end of script headers: C:/html/index.rb

ちなみに、先ほどのファイルをコマンドラインから実行すると問題なく実行できます。

c:¥> ruby html¥index.rb

そこで、エラーに関係している以下のファイルをテキストエディタで開いてみます。

c:¥ruby¥lib¥ruby¥1.9.1¥rubygems¥config_file.rb
46  PLATFORM_DEFAULTS = {}
47
48  system_config_path =
49    begin
50      require 'etc.so'
51      Etc.sysconfdir
52    rescue LoadError
53      '/etc'
54    end
55
56  SYSTEM_WIDE_CONFIG_FILE = File.join system_config_path, 'gemrc'

この56行目でエラーが発生しているので、system_config_pathに入っている文字列を確認してみます。

コマンドプロンプトでirbを使うとわかります。

C:\>irb
irb(main):001:0> require 'etc.so'
=> true
irb(main):002:0> puts Etc.sysconfdir
C:/ProgramData
=> nil
irb(main):003:0>exit

どうやら「C:/ProgramData」と表示されるのが正しいようですので、以下のとおり書き換えちゃいました。

46  PLATFORM_DEFAULTS = {}
47
48  system_config_path =
49    begin
50      require 'etc.so'
51      Etc.sysconfdir
52      "C:/ProgramData"
53    rescue LoadError
54      '/etc'
55    end
56
57  SYSTEM_WIDE_CONFIG_FILE = File.join system_config_path, 'gemrc'

書き換えた後、WebrickでWebサーバを立ち上げ直し、ブラウザからアクセスするときちんと表示されました!

しかし、Googleで検索しても全然情報が見つからなかったけど、みんな困ってないのかな。もしかして、こんな使い方してる人って他にいないのかもしれませんね(汗)

| | コメント (0) | トラックバック (0)

2012/02/11

Lion + ThinReports = 帳票PDFの作成

今、Rubyで帳票を作成するならThinReportsが熱い!ということらしいので、Mac OSX Lionで使ってみる。

まずは、下記URLにて概要を確認。

http://www.thinreports.org/

インストールはRubyGemsを使ってできるようだけど、RubyGemsは1.3.7以上を使ってくださいとのこと。
Lionの標準は1.3.6なので、以下のコマンドで1.3.7にしてみる。

$ gem install -v 1.3.7 rubygems-update
$ update_rubygems

[実行結果]

$ gem -v
1.3.6
$ sudo gem install -v 1.3.7 rubygems-update
Password:
Successfully installed rubygems-update-1.3.7
1 gem installed
Installing ri documentation for rubygems-update-1.3.7...
Installing RDoc documentation for rubygems-update-1.3.7...
Could not find main page README
Could not find main page README
Could not find main page README
Could not find main page README
$ sudo update_rubygems
RubyGems 1.3.7 installed

=== 1.3.7 / 2010-05-13

NOTE:

http://rubygems.org is now the default source for downloading gems.

You may have sources set via ~/.gemrc, so you should replace
http://gems.rubyforge.org with http://rubygems.org

http://gems.rubyforge.org will continue to work for the forseeable future.

New features:

* `gem` commands
* `gem install` and `gem fetch` now report alternate platforms when a
matching one couldn't be found.
* `gem contents` --prefix is now the default as specified in --help. Bug
#27211 by Mamoru Tasaka.
* `gem fetch` can fetch of old versions again. Bug #27960 by Eric Hankins.
* `gem query` and friends output now lists platforms. Bug #27856 by Greg
Hazel.
* `gem server` now allows specification of multiple gem dirs for
documentation. Bug #27573 by Yuki Sonoda.
* `gem unpack` can unpack gems again. Bug #27872 by Timothy Jones.
* `gem unpack` now unpacks remote gems.
* --user-install is no longer the default. If you really liked it, see
Gem::ConfigFile to learn how to set it by default. (This change was made
in 1.3.6)
* RubyGems now has platform support for IronRuby. Patch #27951 by Will Green.

Bug fixes:

* Require rubygems/custom_require if --disable-gem was set. Bug #27700 by
Roger Pack.
* RubyGems now protects against exceptions being raised by plugins.
* rubygems/builder now requires user_interaction. Ruby Bug #1040 by Phillip
Toland.
* Gem::Dependency support #version_requirements= with a warning. Fix for old
Rails versions. Bug #27868 by Wei Jen Lu.
* Gem::PackageTask depends on the package dir like the other rake package
tasks so dependencies can be hooked up correctly.


------------------------------------------------------------------------------

RubyGems installed the following executables:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem

$ gem -v
1.3.7

参考URL
http://d.hatena.ne.jp/ruedap/20110221/ruby_gem_update_version_down

途中、いくつかエラーと思しき文字列も見受けられるけど、完了したと言っているので無視する。

また、Lionに標準で入っているRuby1.8.7にはjsonが必要とのことなので、以下のコマンドでこれもインストールしておきます。

$ sudo gem install json

[実行結果]

$ sudo gem install json
Password:
Building native extensions. This could take a while...
Successfully installed json-1.6.5
1 gem installed
Installing ri documentation for json-1.6.5...
Installing RDoc documentation for json-1.6.5...

最後にThinReports本体をインストールする。

$ sudo gem install thinreports

[実行結果]

$ sudo gem install thinreports
Password:

********************************************

v1.0.0 of PDF::Reader introduced a new page-based API. There are extensive
examples showing how to use it in the README and examples directory.

For detailed documentation, check the rdocs for the PDF::Reader,
PDF::Reader::Page and PDF::Reader::ObjectHash classes.

The old API is marked as deprecated but will continue to work with no
visible warnings for now.

********************************************


********************************************


A lot has changed since 0.8.4

Please read the changelog for details:

https://github.com/sandal/prawn/wiki/CHANGELOG


\ ********************************************

Successfully installed Ascii85-1.0.1
Successfully installed ruby-rc4-0.1.5
Successfully installed pdf-reader-1.0.0
Successfully installed ttfunk-1.0.3
Successfully installed prawn-0.12.0
Successfully installed thinreports-0.7.0
6 gems installed
Installing ri documentation for Ascii85-1.0.1...
Installing ri documentation for ruby-rc4-0.1.5...
Installing ri documentation for pdf-reader-1.0.0...
Installing ri documentation for ttfunk-1.0.3...
Installing ri documentation for prawn-0.12.0...
Installing ri documentation for thinreports-0.7.0...
Installing RDoc documentation for Ascii85-1.0.1...
Installing RDoc documentation for ruby-rc4-0.1.5...
Installing RDoc documentation for pdf-reader-1.0.0...
Installing RDoc documentation for ttfunk-1.0.3...
Installing RDoc documentation for prawn-0.12.0...
Could not find main page README
Could not find main page README
Could not find main page README
Could not find main page README
Installing RDoc documentation for thinreports-0.7.0...

インストールされたライブラリを見ると、Prown使ってますね。
過去に記事を書いたことがあるので、これだけで何となく親しみを感じます。

では、次にエディタをダウンロード&インストール。
上記のThinReportsのサイトからMac版をダウンロードして、アプリケーションに入れておきます。

インストールが終わったら、早速試しに帳票を作成してみます。
下記URLに手順があるのでそれを参考にする。

http://osc.matsukei.net/projects/thinreports/wiki/Getting_Started

とりあえずテキストを一つ追加して、IDを「mySample」としてみました。
そして、ファイルを「sample.tlf」として保存し、下記のコードを書いて実行してみる。

# coding: utf-8

require 'rubygems'
require 'thinreports'

report = ThinReports::Report.new :layout => 'sample'

report.start_new_page

report.page.item(:mySample).value('aaaaa')

report.generate_file('sample.pdf')

puts 'Done!'

すると...できた、できた!
きちんと、入力した文字列が「aaaaa」に置き換わってPDFが作成されてます。

ちなみに、サンプルコードを以下のように変更するとWebアプリケーションから動的にPDFを表示することもできるようになります。

#!/usr/bin/ruby

# coding: utf-8

require 'rubygems'
require 'thinreports'
require 'cgi'

report = ThinReports::Report.new :layout => 'sample'

report.start_new_page do
values(
:mysample => "aaaa123"
)
end

$cgi = CGI.new()

print $cgi.header('type' => 'application/pdf')
print report.generate

やるなThinReports、使えるぞ。

| | コメント (0) | トラックバック (0)

2012/01/26

Mac OS X 10.7(Lion) + Ruby + SQLite3 = 10.6のWebアプリが動かない...

Facebookに移行してから、ずいぶんとブログを書かない日が続きました。
でも、やっぱり長文はブログかな...と思い、こちらにまとめてみます。

先日、内蔵HDDを交換し、メモリを8GBにして、OSをLion(10.7)にしました。
また一段とOSが軽くなって、様々な操作が早く終わるので、もうSnowLeopard(10.6)には戻れない...と感心していたら、以前使用していたWebアプリケーションが全然動かない。

調べてみたら、Lionからはsqlite3-rubyが標準では入っていないみたい。

ということで、インストール...でも、うまくいかない。

$ sudo gem install sqlite3
Password:
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.5 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.5/ext/sqlite3/gem_make.out

ふー...ヘッダーファイルがない(can't find header files)から構築(build)できないとのこと。
以前、MySQL/Rubyを入れた時の経験から、こんな時はXcodeを入れれば良いはず!
ということで、App StoreからXcodeをダウンロード中。

ダウンロードしたら、Install Xcodeを実行してインストール。

20120126_xcodeinstaller

インストールが終わってから、一応バージョンを確認してみる。

$ xcodebuild -version
Xcode 4.2.1
Build version 4D502

インストールが無事に終了したようなので、もう一度gemでsqlite3-rubyのインストールを試みる。

$ sudo gem install sqlite3
Password:
Building native extensions. This could take a while...
Successfully installed sqlite3-1.3.5
1 gem installed
Installing ri documentation for sqlite3-1.3.5...

No definition for libversion

Enclosing class/module 'mSqlite3' for class Statement not known
Installing RDoc documentation for sqlite3-1.3.5...

No definition for libversion

Enclosing class/module 'mSqlite3' for class Statement not known

エラーがいくつか出てるけど、インストール成功(Successfully installed)って書いてあるから、良しとしよう。

そして、作ったWebアプリを起動してみると...やったー!動いた、動いた。

ということで、僕以外にも困っている人がおられることと思い、何かの参考になることを期待してインストール作業をまとめてみました。

ちなみに、MacでWebアプリケーションを動かす参考として、以下の記事もご参照下さいな。

Mac(Apache) + Ruby + 少しの労力 = CGI

| | コメント (1) | トラックバック (0)

2011/08/23

Ubuntu + SQLite3 + Ruby = 簡易データベースの準備

これまでPostgreSQLやMySQLでデータベースを構築して、Webアプリケーションを作成してきたけど、なんだかいつもしっくりこない。RDBMSを使っても、結局はローカルでアクセスする場合がほとんどだし、それほどトラフィックがあるわけでもなく、速度も要求されない。

僕の場合は、その多くがテストか小規模のものなので、わざわざこれらRDBMSを使わなくても簡単に利用できるものがあればそれを使ってもかまわない。というよりむしろ、そちらの方が便利が良い。

ということで、代替手段を探してみるとSQLiteというのが一番良さそう。

では早速Ubuntuにインストールしてみる。

http://techno.hippy.jp/rorwiki/?HowtoUseSQLite

上記URLを参考にして下記コマンドでインストールしてみる。

$ sudo apt-get install libsqlite3-dev sqlite3 swig

他にもlibsqlite3-0をインストールするように書いてあったけど、locateしてみたら入ってそうだったので除外してます。

次にRuby用のモジュールをgemでインストール。

$ sudo gem1.8 install sqlite3-ruby

まずはSQLite3の動作確認。

$ sqlite3 sample.db
SQLite version 3.4.2
Enter "".help"" for instructions
sqlite> create table `test` (
...> id integer primary key,
...> name varchar(255)
...> );
sqlite> .schema
CREATE TABLE `test` (
id integer primary key,
name varchar(255)
);
sqlite> insert into test values(1,'test');
sqlite> insert into test values(2,'test');
sqlite> select * from test;
1|test
2|test
sqlite> .quit

おぉ、動いてる動いてる。
なかなか面白いですね。

では次にRubyからの接続確認。

$ irb
irb(main):001:0> require 'sqlite3'
LoadError: no such file to load -- sqlite3
from (irb):1:in `require'
from (irb):1
from :0

何?...ちょっと調べてみたらgemで入れたものはgemをrequireしないとだめなのね。
しかも、どこに行ってもActiverecordを使った接続の解説ばかり...なんだか気に入らない。

ということで、純粋なライブラリを入れ直し。

$ sudo apt-get install libsqlite3-ruby

またirbで接続確認。

$ irb
irb(main):001:0> require 'sqlite3'
=> true
irb(main):002:0> db=SQLite3::Database.new(""sample.db"")
=> #<SQLite3::Database:0xb7ac2878 @closed=false, @handle=#
irb(main):003:0> sql =<<EOFrnirb(main):004:0"" insert into test values(3, 'ddd');rnirb(main):005:0"" EOFrn=> ""insert into test values(3, 'ddd');""rnirb(main):006:0> db.execute(sql)
=> []
irb(main):007:0> exit

おおぉ、いきましたね。
では、次に入力した内容をコマンドラインで確認してみます。

$ sqlite3 sample.db
SQLite version 3.4.2
Enter "".help"" for instructions
sqlite> select * from test;
1|test
2|test
3|ddd
sqlite> .quit

パチパチパチ...
ということで、SQLiteが使えるようになりました。Accessみたいにデータをファイルでやりとりできるから僕にはかなり便利。

これから、MySQL用に作ったライブラリをSQLite3用に転用する作業をしてみようかな。

参考URL

http://sqlite-ruby.rubyforge.org/sqlite3/faq.html

| | コメント (0) | トラックバック (0)

2011/08/18

Mac(Apache) + Ruby + 少しの労力 = CGI

先日サービスを終了した松江SNSにて公開していた記事を少しずつ転載してみたいと思います。
ネタは古いですが、古いネタは意外とすぐにネットから消えてしまうようなので、きっと誰かのお役に立てるはず。

MacでApacheとRubyを使ったCGI動作設定のメモです。

調べてわかったこと

・設定ファイルは"/private/etc/httpd"の中
・個人用設定ファイルは"/private/etc/httpd/users"の「ユーザー名.conf」
 *Lepardでは"/private/etc/apache2/users"
・公開用ディレクトリは"/Library/WebServer/Documents"
・個人公開用ディレクトリはホームの中にある"Sites"

ということで、個人用設定ファイルを確認すると

<Directory "/Users/XXXX/Sites/">
Options Indexes MultiViews
AllowOverride none
Order allow,deny
Allow from all
</Directory>

となっているので、

$ sudo vi /private/etc/httpd/users/[ユーザー名].conf

を実行し、

AllowOverrride All

と書き換える。
ちなみにviでの上書き保存をして終了する方法は「esc」を押してから「:wq」と入力して「return」。

個人公開用ディレクトリに移動して、htaccessの設定を変更するため、

$ cd
$ vi ~/Sites/.htaccess

を実行し、

Options +ExecCGI
AddHandler cgi-script .rb
DirectoryIndex index.rb

と入力。

システム環境設定で「共有」を選択し、サービスの「パーソナルWeb共有」にチェックを入れると準備完了。

下記のスクリプトを作って「text.rb」という名前で保存してみる。

#!/usr/bin/ruby

print "Content-type: text/html

"
print "Test"

ブラウザを立ち上げ、

http://192.168.0.28/~XXXX/test.rb

にアクセスし、無事にテストと表示されることを確認。

| | コメント (0) | トラックバック (0)

2010/08/04

githubはじめました

先日、prawn-svgの作者に「Inkscapeで作ったデータではうまくPDFが生成できないので、自分で変更したのですが、その内容を反映してもらいないでしょうか」とメッセージを送ったら、「さっき、大きな変更を加えたから多分直接反映はできないと思われます。また修正された部分は"pull request"してくれたら良いですよ」との返事が...このやり取りは一ヶ月以上前のことでした。

そういうことで、旧バージョンを使い続けていたのですが、先日のMatsue.rbに参加した機会に新しいバージョンを見てみました。
確かに大きな変更が加えられていて、ほぼ全てのコードが変更され、記述のしかたが全然違うではないですか。

自分の加えた変更を反映させようと思ったらとても大変でした。

いくらか試行錯誤を繰り返しながらも、何とか反映させる事に成功。
まだまだ完璧とは言えないものの、もう一工夫したら使えるようになりそうなので、"pull request"するためにgithubに挑戦。

元のリポジトリをフォークして、MacBook Proにgitをインストールして、コードを変更して反映させる...できた、できた。

shinob/prawn-svg@github

文章にすると一行ですが、gitを使ってここまでするのに大変苦労しました。
ということで、いつも通り(自分のために)メモを残しておきます。

**** GitHubの使い方(Mac OS X) ****

1. アカウントの取得

github

2. 公開鍵の設定

鍵の生成
$ ssh-keygen -t rsa -C "[メールアドレス]"
$ cat ~/.ssh/id_rsa.pub | pbcopy
生成後、「アカウントの設定」で、「SSH公開鍵」を表示し、ペーストして設定。

3. gitのインストール

git-osx-installer

4. 初期設定

$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com

5. ソースをローカルへコピー

$ git clone git@github.com:shinob/prawn-svg.git

6. 変更箇所の確認

$ git diff

7. 変更の反映

$ git commit -a -m "[comments]"

8. 変更の確認

$ git log

9. 変更の取り消し

$ git reset --soft HEAD^

10. リモートへの反映

$ git push

ということで、これから変更、変更!
"pull request"はもう少ししてからにしよう。

うーん、ソースコードと向き合って、一つ一つ解決している時が一番落ち着くなぁ...現実逃避気味かも...

BGM : VOCALIST by 徳永英明

| | コメント (0) | トラックバック (0)

2010/07/15

Ruby 1.8から1.9へ

今更なことですが、Rubyの最新バージョンは1.9です。
僕が使っているのは1.8です。これはMacに入っている標準のバージョンが1.8だからです。

しかし、使っているのが1.8だからと言って、1.8がいつまでも使える環境にあるか否かと考えてみると、きっといつの日か使えない日が来るでしょう。
その時に困らないようにと、別に持っているUbuntuマシンに1.9を入れて、自分のスクリプトが動作するかどうか試してみました。

結果は、全敗。

いろいろと調査していたのですが、既に数千から数万行あるスクリプトの調査に疲れ、先日まで投げ出していました。

ところが、先日、新しく1.9の環境で一から作り始めてみると簡単に原因がわかってしまいました。改めて調べてみるとWeb上にも似たような事例が沢山あり、前回の調査でどうして解決できなかったのか、自分でもわかりません。

では、僕のスクリプトが動作しなかった原因と、その解決策を以下にまとめます。

1. 原因

データベースにSQLite3を使用しているのですが、SQLite3/Rubyは1.9において戻り値のエンコーディングをASCII-8BITで返していた。
WebアプリケーションではUTF-8を標準で使用し、データベースに登録するときはUTF-8で保存していたので、SQLite3からの戻り値と他のデータをgusbで置き換えようとしたときに、エンコーディングが不一致であるとのエラーが出る。
同じく、GETで取得したデータもASCII-8BITとなっていた。

2. 対策

RUBY_VERSIONによりバージョン情報を取得して、1.9以上であればforce_encoding('UTF-8')で強制的にUTF-8に変換する。

if RUBY_VERSION < '1.9.0' then
  tmp = val.to_s
else
  tmp = val.to_s.force_encoding('UTF-8')
end

関数でも作って、これを中継して文字列処理を行うようにすれば良いみたい。

良かった、良かった。これで、大量に作ったWebアプリを移行する作業に目処がつきました。

| | コメント (0) | トラックバック (0)

2010/05/27

prawn-svg + Inkscape = サイズ調整

InkscapeでA4サイズの帳票を作り、prawnで作成したA4サイズのPDFに読み込んでみると、確かに読み込めるのですが、どうもしっくりこない。


しっくりこないと思ったら、Inkscapeとprawn-svgでは少し座標系が異なっているのが原因のようでした。

prawn-svgでは幅の指定ができ、その指定によってサイズの調整をするようなので、そこにA4サイズの横幅210[mm]を指定します。

次に用紙の左下が座標[0, 0]になるので、描画位置を左上に指定します。
これには高さを取得する必要があり、A4サイズの場合では297[mm]になるようです。

以上のことから、SVGを描画するコードは下記となります。

f = open("sample.svg")
svg_data = f.read
f.close

@pdf = Prawn::Document.new()
@pdf.svg(svg_data, :at => [0, 297.mm], :width => 210.mm)

ところが、これでもまだきちんと描画されません。297[mm]は、用紙の一番上になるはずですが、少し上に描画されてしまいます。

調べてみると、どうやらPrawnでは用紙に余白が標準で設定されており、これが位置のずれに関係しているようでした。

なので、これを0mmに初期化してあげます。
Prawnの初期化で用紙の余白を0[mm]に設定することとし、以下のコードに書き換えます。

@pdf = Prawn::Document.new(
  :page_size => "A4",
  :left_margin => 0.mm,
  :top_margin => 0.mm,
  :bottom_margin => 0.mm
)

これで一件落着。
Inkscapeで描画した通りにPDFが生成されるようになりました。

良かった、良かった。

| | コメント (0) | トラックバック (0)

より以前の記事一覧