ホーム ブログ ページ 69

fastladderを試してみました ~rails2.0~

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、tacchiです。

fastladderがオープンソース

になったという記事を見て、ラボの時間を利用して、入れてみました。

検証環境

CentOS 5
Rails: 2.0.2

インストール手順

svn checkout http://fastladder.googlecode.com/svn/trunk/ fastladder-read-only

fastladder-read-onlyというディレクトリが作成されて、なかみてみるとrailsプロジェクトと
batファイルなどが入ってます。

batファイル中見ましたが、mongrel動かしたり、serviceに登録したりをシェル化しているだけです。なので、今回は特に使わず、自分で設定しました。

では、さっそくfastladerを動かすための設定をしたいと思います。

まず、DB関連。
■fastladder/config/以下にdatabase.ymlとかdatabase.yml.mysqlとかあるので環境に合わせて切り替える。自分はMySQLが元々環境に入っているので、MySQLを利用します。$ mv database.yml database.yml.base
$ mv database.yml.mysql database.yml


■DB作成します。
mysqlにログインして、DB作成します。mysql > create database fastladder_production;
Query OK, 1 row affected (0.00 sec)


■ユーザ作成mysql > grant select,insert,delete,update,create,drop,file,alter,index on *.* to fastladder@localhost identified by ‘12345’;
mysql > flush privileges;


■これだけyumでインストールできないので以下のコマンドでインストールwget http://downloads.sourceforge.net/freeimage/FreeImage3100.zip
unzip FreeImage3100.zip
cd FreeImage
make
make install


■gemで以下インストール$ gem install rfeedfinder
$ gem install feed-normalizer
$ gem install opml
$ gem install mongrel


■テーブル作成します。
fastladderディレクトリに移動して以下を実行rake db:migrate

■実行
fastladderディレクトリに移動して以下を実行script/server -d -e production
RAILS_ENV=production script/crawler > /dev/null &

まとめ

簡単にインストールできました。自分は、mongrel_clusterなどを使って起動とかさせてますが、上記で動きます。あと、INSTALL.txtとか丁寧に書いてくれてるので、参考になりました。

Railsの手動インストール

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。 kimiです。

今回は、Railsを手動でインストールしたケースをご紹介します。

実は、この方法をとった背景には、当サイト「DoRuby!」のローカル環境を構築する時に

RubyGemsによる自動のリモートインストールが失敗したことがきっかけです。

※Windowsでローカル環境構築をおこないます。

前回はgemコマンドについて紹介しており、その際にはRuby(1.8.5) をインストール済みです。確認もしてみましょう!

◆rubyのバージョンを確認するコマンド 

C:/>ruby -v

ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]

railsインストールの失敗談 

さて、それではgem コマンドを使って、rails の環境を構築・・・と思いきや、

C:/ruby>gem install rails

Bulk updating Gem source index for: http://gems.rubyforge.org

Install required dependency rake? [Yn]

Install required dependency activesupport? [Yn]

Install required dependency activerecord? [Yn]

ERROR: While executing gem … (Zlib::BufError)

   buffer error

なんじゃこりゃーと思いつつ、Rails に必要な gem をダウンロードしてきて

インストールすることで解決しました。

さてさて、ここからが手動のダウンロードおよびインストールになります。

あっ、ちなみに他にも解決方法はあるのですが、今回は手動をでの方法を選んでみました。 

Rails の依存ファイル群をダウンロード 

まずは、Rails の依存ファイル群をダウンロードします。今回はC:/ruby>配下に保存。

Rails 以外は rails が必要としている gem なので rails は一番最後にインストールしてください。

     ■activesupport-1.4.2.gem

     ■activerecord-1.15.3.gem

     ■actionpack-1.13.3.gem

     ■actionmailer-1.3.3.gem

     ■actionwebservice-1.2.3.gem

     ■rails-1.2.3.gem

Railsをインストール

◆RubyGemsのlocalオプションを使うことでRailsをインストールすることができる。

 下記の順にインストール。

C:/ruby>gem install activesupport --local
Successfully installed activesupport, version 1.4.2
Installing ri documentation for activesupport-1.4.2...
Installing RDoc documentation for activesupport-1.4.2...


C:/ruby>gem install actionpack --local
Successfully installed actionpack, version 1.13.3
Installing ri documentation for actionpack-1.13.3...
Installing RDoc documentation for actionpack-1.13.3...


C:/ruby>gem install activerecord --local
Successfully installed activerecord, version 1.15.3
Installing ri documentation for activerecord-1.15.3...
Installing RDoc documentation for activerecord-1.15.3...


C:/ruby>gem install actionwebservice --local
Successfully installed actionwebservice, version 1.2.3
Installing ri documentation for actionwebservice-1.2.3...
Installing RDoc documentation for actionwebservice-1.2.3...


C:/ruby>gem install actionmailer --local
Successfully installed actionmailer, version 1.3.3
Installing ri documentation for actionmailer-1.3.3...
Installing RDoc documentation for actionmailer-1.3.3...


C:/ruby>gem install rails --local
Successfully installed rails, version 1.2.3  

これでインストールが完了です。

インストールできたか確認したい場合は、C:/ruby/lib/ruby/gems/1.8/gems配下をご確認ください。 

◆※複数のVersionがインストールされている場合などは、不要なVersionを指定して

 アンインストールも可能です。

gem list                # インストールされているパッケージを確認

gem uninstall <パッケージ名>  # アンインストールコマンド

 このような流れでローカル環境構築をおこなってみましたが、まだまだ簡単に構築できる

手段は多く存在しますので、いろいろと試してみるといいでしょうね。

では、サッカー日本代表の3次予選(vsタイ戦)がそろそろ終わるので、ここらで失礼します。

(-_-)ゞ

RadiantCMSのインストール(2)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

お久しぶりです。花吹雪です。


インストール中に中断するなよ!という声が聞こえてきそうですが、
私が戻ってきたからにはもう大丈夫。
我慢できずに自分で調べてインストールしてしまった方。ご苦労様でした。
一方、我慢して今回の書き込みを待ちわびていた方。どうもありがとう!
では早速、続きを書くとしましょうか。

日本語化の設定

確かデータベースの設定まで終わったんでしたよね。
あとはデータベースの初期化をすれば終わりなんだけど、
その前に、ここで日本語化の設定をしてみたいと思います。
「ワタシ日本語キライ」という方はこの章は飛ばしてください。


あらかじめ言っておきますが、全てが日本語になるわけではありません。
Radiantの管理画面と、編集で使用するタグのヘルプが日本語化されます。


まず、Ruby-GetText-Packageというパッケージ(バージョン1.9.0以上)
を利用するので、これをgemを使ってインストールします。インストールしたら
一応バージョンを確認してください。$ gem install gettext
$ gem list gettext (バージョンの確認)

次にRubyForgeから以下のアーカイブをダウンロードし、 Radiantのvender/extensions以下に展開します。$ cd /home/radiant_project/vendor/extensions
$ wget http://rubyforge.org/frs/download.php/23244/radiant_gettext_0.6.2.tar.gz
$ tar xvzf radiant_gettext_0.6.2.tar.gz

最後にRadiantのルートディレクトリでRakeタスクを実行します。$ cd /home/radiant_project/
$ rake radiant:extensions:gettext:setup

でですね、アーカイブのバージョンを見てもわかる通り、Radiantのバージョン0.6.2
に依存しているようなので、ここでRadiantをfreezeしておくと良いとの事。
freezeというのはアプリケーションをRAILS_ROOT/vendorの下にコピーすることを
言うんだそうです。RAILS_ROOT/vendorの下にアプリケーションがあると、そちらが
優先的に使われるんだと。とりあえず、おまじないという事でやっておいて損はない
でしょう。$ rake radiant:freeze:edge TAG=rel_0-6-2

データベースの初期化

データベースを初期化します。途中で3回の入力(1.初期化の確認、2.ログインユーザ名、
3.ログインパスワード)があるので、きちんと答えてあげてくださいね。$ rake production db:bootstrap

Radiantの実行

あとはRadiantを実行して終わりです。$ cd /home/radiant_project/
$ ruby script/server -e production


以上です。
私はこの環境、この手順でインストールできましたが、
環境やバージョンが異なるとまた違ってくると思いますので、
この記事を参考にいろいろ試してみてください。

Railsで「Lost connection to MySQL server during query」に遭遇した場合の対策

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは!TrinityTです。

さて、先日Rais開発中に「Lost connection to MySQL server during query」というエラーが多発する現象に遭遇しました。

出力されているメッセージどおり、「MySQLのコネクションがクエリ実行中にロスとした」ということらしい。

調べてみたところ、以下のようなことが原因で発生するようです。

 ● 一回のコネクションで通信パケットが大きい場合

 ● セッションに多量の情報が入っている場合 

 ● APサーバ、DBサーバの性能が低い場合

この現象方法の対処方法として「 mysql_retry_lost_connectionというライブラリを使うことで改善される?」との情報を得たため試してみました。

検証した環境

OS:WindowXP SP2

Ruby:1.8.6(インストール済)

Rails:1.2.6(インストール済)
 

検証 

1.mysql_retry_lost_connection インストール

 既にRubyGemsで提供されているため、gemコマンドでインストールします。

 # gem install mysql_retry_lost_connection

2.require追加

railsのenvironment.rbファイルに、以下の記述を行います。

require ‘mysql_retry_lost_connection’

3. APを再起動します。

自分の開発環境で使用してみたところ、適用してから一度も「Lost connection~」現象が発生することはありませんでした。しかし、時折無限コネクションループに陥り、APが固まってしまう現象が発生しました。

結論

コネクションループ現象が非常に怖いため、本番サーバでつかうのは止めたほうが良いと思います。しかし非力な開発環境などで本現象に悩まされている場合には、適用してみてはいかがでしょうか?

Linuxとかのbashで使えるショートカットキーをまとめた一覧

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

高瀬です。昔自分のブログにて書いたbashとかzshとかcshで使える

ショートカットキーの一覧を投稿してみます。

zshを使っている時によく使ってるショートカットキーを紹介してみる。

^はコントロールキーを押しながらと言う意味で使っています。

基本っぽいもの

コマンド意味
tabコマンドやファイルの自動補完(足りない文字を補完してくれる
^c実行中のコマンドを停止
^z実行中のコマンドを一時停止(fgで再開)

履歴系

コマンド意味
^pコマンドのひとつ前の履歴を呼び出す。(↑でも可)
^nコマンドのひとつ後の履歴を呼び出す。(↓でも可)
^rコマンドの履歴を検索する。

移動系

コマンド意味
^a一文字目に移動(homeキー)
^e最後に移動(endキー)
^f右に移動
^b左に移動

文字削除

コマンド意味
^k現在のカーソル位置から末尾まで削除
^d一文字削除(delキー)
^h一文字削除(BackSpaceキー)
^y削除した文字を貼り付け

画面操作

コマンド意味
^l画面をクリアする。
^s画面表示を停止する。
^q画面表示を再開する。

その他

コマンド意味
^dログアウト。

長い文字列をカットして表示するプログラム

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。
KBMJでRuby on Railsを使ったWebの開発をしている本多と申します。

今回は「指定の文字数より長ければカットして表示する」というプログラムを紹介したいと思います。

Ruby のソースコードは以下です。

$KCODE=’u’ #文字コードを指定。今回はutf-8の場合
require ‘jcode’ #jlength(マルチバイトの文字列の長さを取得するメソッド)を使用するためにjcodeを読み込む

def cut_off(text, len)
  if text != nil
    if text.jlength < len
      text
    else
      text.scan(/^.{#{len}}/m)[0] + “…”
    end
  else
    ”
  end
end

puts cut_off(“任意の文字列”, 任意の文字数(整数))

上のソース内のtextとは「カットしたい文字列」、lenとは「カットしたい長さ」です。
指定の文字数よりも長い場合に正規表現を用いて先頭からlenの長さだけ文字列を抜き取り、末尾に”…”を付加したものを返します。
[0]が付いていますが、これはscanという関数が「パターンにマッチした文字列を、マッチした数だけ配列で返す」という特徴を持っているため、
text.scan(/^.{#{len}}/m) + “…”と書いてしまうと


[“マッチした文字列”] + “…”


になってしまい、配列 + 文字列という処理を行おうとしてエラーが出ます。

textの中身がlenより短い文字列の場合はそのまま返します。

この関数の最大の魅力は「日本語(マルチバイト)に対応しているという点です」
例えばcut_off(“こんにちは。KBMJの本多です。”, 10)と書くことで
「こんにちは。KBMJ…」という文字を得ることができます。


注意点としては、必ず『$KCODEの宣言』と『jcodeの読み込み』を行うようにしてください。
$KCODEが宣言されていない場合は正常な文字数で取り出せず、
jcodeが読み込まれていない場合はNoMethodErrorが出てしまいます。

ちなみに Ruby on Rails でcut_offを使用する場合はソースを書く場所がそれぞれ以下になります。

(RAILSROOT)/config/environment.rb

先頭の行に追加

$KCODE = ‘u’
require ‘jcode’
# Be sure to restart your web server when you modify this file.

# Uncomment below to force Rails into production mode when
————————-中略—————————-


(RAILSROOT)/app/helpers/application_helper.rb

# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper

  def cut_off(text, len)
    if text != nil
      if text.jlength < len
        text
      else
        text.scan(/^.{#{len}}/m)[0] + “…”
      end
    else
      ”
    end
  end

end


(RAILSROOT)/app/views/hoge/hogehoge.rhtml

<%= cut_off(“文字列”, 20) %>


これでRails上でも任意の文字数でカットできるようになりました。

例えばブログのタイトルのみを表示させるインデックスを作成する際、
長すぎるタイトルをそのまま表示するとレイアウトが崩れる原因になることがあります。
そんな時に役に立つのが、このcut_offです。
是非活用してみてください。
それでは。

GOOD RAILS!!

Scaffoldはどこからくるの? 後編

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。
KBMJのエンジニアの高瀬です。

大分間が空いてしまいましたが、前回の続きを書く事にします。
前回は、http://doruby.kbmj.com/zenpou_on_rails/20071227/Scaffold___

前回はscaffoldを作って以下の様なファイルが出来ました。
     create  app/views/members
      create  app/views/members/index.html.erb
      create  app/views/members/show.html.erb
      create  app/views/members/new.html.erb
      create  app/views/members/edit.html.erb
      create  app/views/layouts/members.html.erb
      create  public/stylesheets/scaffold.css
      create    app/models/member.rb
      create    test/unit/member_test.rb
      create    test/fixtures/members.yml
      create    db/migrate
      create    db/migrate/001_create_members.rb
      create  app/controllers/members_controller.rb
      create  test/functional/members_controller_test.rb
      create  app/helpers/members_helper.rb

こちら、どこから来るのかを調べて行こうと思います。

結論を先に述べると、以下のパスにテンプレートが存在します。
{railsのインストール先}/lib/rails_generator/generators/components/scaffold/
これがどのような仕組みになっているかを追いかけて行きます。

前回、scaffoldは以下のコマンドによって生成されました。

      ruby script/generate scaffold Member name:string discription:text birthday:datetime
rubyの構文はruby –helpによって出してみたところ
    Usage: ruby [switches] [–] [programfile] [arguments]

      -0[octal]       specify record separator (\0, if no argument)
      -a              autosplit mode with -n or -p (splits $_ into $F)
      -c              check syntax only
      -Cdirectory     cd to directory, before executing your script
      -d              set debugging flags (set $DEBUG to true)
      -e ‘command’    one line of script. Several -e’s allowed. Omit [programfile]
      -Fpattern       split() pattern for autosplit (-a)
      -i[extension]   edit ARGV files in place (make backup if extension supplied)
      -Idirectory     specify $LOAD_PATH directory (may be used more than once)
      -Kkcode         specifies KANJI (Japanese) code-set
      -l              enable line ending processing
      -n              assume ‘while gets(); … end’ loop around your script
      -p              assume loop like -n but print line also like sed
      -rlibrary       require the library, before executing your script
      -s              enable some switch parsing for switches after script name
      -S              look for the script using PATH environment variable
      -T[level]       turn on tainting checks
      -v              print version number, then turn on verbose mode
      -w              turn warnings on for your script
      -W[level]       set warning level; 0=silence, 1=medium, 2=verbose (default)
      -x[directory]   strip off text before #!ruby line and perhaps cd to directory
      –copyright     print the copyright
      –version       print the version


となっています。
今回の場合、      “script/generate”[

がprogramfileで      “scaffold Member name:string discription:text birthday:datetime”
がargumentsになります。


というわけで、プログラムファイルの内容を見て見ましょう。
script/generateの中身はこんな内容になっています。      #!/usr/bin/env ruby
      require File.dirname(__FILE__) + ‘/../config/boot’
      require ‘commands/generate’


require は、ライブラリの呼び出しを行います。
ここで、      require File.dirname(__FILE__) + ‘/../config/boot’


は、プロジェクトのrailsの呼び出しを行っているRailsの基本的な所ですので、      require ‘commands/generate’


を見てみる事にします。
{Railsのインストール先}/lib/commands/generate.rb
を参照しましょう。      require “#{RAILS_ROOT}/config/environment”
      require ‘rails_generator’
      require ‘rails_generator/scripts/generate’

      ARGV.shift if [‘–help’, ‘-h’].include?(ARGV[0])
      Rails::Generator::Scripts::Generate.new.run(ARGV)


Railsのenvironment(環境の設定等)を呼び出し、rails_generatorとrails_generator/scripts/generateを呼び出して、
います。

ちょっと文章がソースばかりになるので、省略しますが、      require ‘rails_generator’


のrails_generator.rbにて、      require ‘rails_generator/base’
      require ‘rails_generator/lookup’
      require ‘rails_generator/commands’
      require ‘rails_generator/simple_logger’


など、generatorのファイルを呼び出しています。
そして、lookupによって下記のフォルダにあるファイルをgeneratorのコマンドに取り込んでいます。      #{::RAILS_ROOT}/lib/generators
      #{::RAILS_ROOT}/vendor/generators
      #{::RAILS_ROOT}/vendor/plugins/*/**/generators
      #{::RAILS_ROOT}/vendor/plugins/*/**/rails_generators
      #{Dir.user_home}/.rails/generators
      #{File.dirname(__FILE__)}/generators/components


そして実行段階。/lib/commands/generate.rbの中で実行されていたrunコマンドを見てみます。      Rails::Generator::Scripts::Generate.new.run(ARGV)


クラス名Rails::Generator::Scripts::Generateなのでrails_generator/scripts/generate.rbを見に行きます。
/lib/commands/generate.rbで3行目でrequireされてましたね。
見てみると      require File.dirname(__FILE__) + ‘/../scripts’

      module Rails::Generator::Scripts
        class Generate < Base
          mandatory_options :command => :create
        end
      end

というコードになっています。
run呼び出してるのにrunがない……。
Rails::Generator::Scriptsを拡張してるみたいです。
いったりきたりで大変ですね。

というわけでrails_generator/scripts.rbにいきます。        def run(args = [], runtime_options = {})
          begin
            parse!(args.dup, runtime_options)
          rescue OptionParser::InvalidOption => e
            # Don’t cry, script. Generators want what you think is invalid.
          end

          # Generator name is the only required option.
          unless options[:generator]
            usage if args.empty?
            options[:generator] ||= args.shift
          end

          # Look up generator instance and invoke command on it.
          Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
        rescue => e
          puts e
          puts ”  #{e.backtrace.join(“\n  “)}\n” if options[:backtrace]
          raise SystemExit
        end
長いのでrunのコードだけ採用しています。
Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
にてジェネレータを見つけ、lookupでロードしたgenaratorの manifestを呼び出しています。
ここに関するコマンドはlib/rails_generator/commands.rbなどに定義されているのでそこから掘っていってください。

というわけで、送った”scaffold Member name:string discription:text birthday:datetime”の最初のscaffoldの指定により、
scaffoldを呼び出します。

ということで、lookupの中のソースコード一覧の中で、scaffoldのソースコードが存在するのは
{railsのインストール先}/lib/rails_generator/generators/components/scaffold/
でしたので、scafolldはここから来ている事がわかりました。

今回、
Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
を検索している際、ヒットした
http://d.hatena.ne.jp/elm200/20070718/1184736852を途中から参考にさせていただきました。

というか、既にこちらのエントリがあったという事で、今回のエントリは二番煎じだったかな……と思いましたが、

とりあえず後悔公開CHUです。

aptanaのインストールと使い方について

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、KBMJの中平@railsエンジニアです。

本日は、私がrailsの開発で使用している「aptana」について紹介いたします。

aptanaとはeclipseベースで作られたIDEの一つです。また、eclipseのプラグインとして、aptanaを使用することも可能になっています。
aptanaは複数の言語での開発が可能で、ruby on rails の開発はもちろんphpなどの開発も可能です。
また、web編集に優れており、CSSやjavascriptの作成もしやすいという特徴があります。

参考に
http://ja.wikipedia.org/wiki/Aptana

今回は、このaptanaインストール使い方日本語化などについて書きたいと思います。■Aptana Stadioをインストールする。

  1. aptanaを動かすには、javaが必要なので、jreもインストールしておく。
  2. 続いてAptana Stadioをダウンロードしておき、インストール。
  3. 起動してみて問題なければOKです。

このままでも使えますが、日本語化したい場合は
eclipseの日本語化プラグインを使います。(aptanaはeclipseをベースに作られているため使用可能)
Pleiadeをダウンロードします。
Pleiadesをインストール(read meを参考にしてください)後、aptanaを再起動し、日本語化されていれば成功です。

■radrailsのプラグインインストール
aptanaインストールしただけでは、まだrailsの開発はできませんので、
radrailsというrails開発用のプラグインをインストールします。

  1. aptanaのヘルプ→ソフトウェア更新→検索およびインストールを選択
  2. インストールする新規フィーチャーを選択し、radrailsにチェックをいれて、次へを押してインストールを行います。


■aptanaでrailsやmongrel_railsを使うための設定

aptanaのツールバーから「ウィンドウ→設定」画面が開いたら「railsの項目」を選択し、使用するrails、rake、mongrel_railsのパスを設定します。

その他の項目は個人の環境や好みで調整してください。ここでは省略します。

mongrelはあらかじめインストールが必要です。

■railsプロジェクトの作成方法

aptanaのツールバーから「ファイル→新規作成→railsプロジェクト」を選んで作成します。
コマンドの rails hogehoge と一緒です。

■aptanaの使い方

ここからは個人の好みもありますが、
WEBrick(mongrel)の起動や、rake、ジェネレートの実行など、aptana上での使い方を説明します。

まず、aptanaのツールバーの「ウィンドウ→ビューの表示」から サーバー、rake タスク、ジェネレーターをそれぞれ選択
すると、それぞれの操作用のウィンドウ枠が下のほうに表示されます。
・サーバー(webrick,mongrelの起動)

 サーバーのウィンドウで右クリックし、プロジェクトと、サーバーのタイプを選び作成します。
 サーバーを起動するときは、緑色の矢印ボタンを押せばOKです。


・rake

 特に設定無し、実行したいrake を選ぶか 入力ボックスにコマンドを直接書いて実行してもOKです。


・ジェネレーター

作成したいものを選択ボックスから選んで入力ボックスに名前を書いて実行。

ちなみに、作成したのも削除するのもここで出来ます。


・そのほかにも、gem installや自動テストもaptanaで行うことが可能です。
・DBのテーブルも見ることが出来ますが、重いので余りお勧めできません。

・他にも色々な使い方ができますが、紹介し切れませんので、また後日面白い機能があれば紹介したいと思います。

また、aptanaは総合開発環境になっていて、ruby(rails)のほかにもphpやAir、iphoneの開発もプラグインを入れることで可能です。

私の周りでは、vimを使って開発している人が多いのですが、eclipseなどのIDEが慣れているという人はaptanaをインストールしてみてはいかがでしょうか?

追記

aptanaでrailsをデバッグする方法はこちらです。

ローカルメールサーバーでRailsでのメール受信のテストを便利に

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

 こんにちは。

 KBMJでRuby on Rails を使ったweb開発に携わっているyoppiといいます。

 メールを受信して処理する機能がある場合、いちいちテストサーバーにコードをアップしてとか面倒くさくないですか?

 Rails限定ですが、今回は、メール受信の処理をローカルで実行できるようになる方法をご紹介します。

 ActionMailServer – テストとか

 ローカルでテストするためのメールサーバーはこちらを使用します。設定・起動方法は上記ページに書いてありますのでご参照下さい。

 自分がよくわからなかったのは、Outlook ExpressやThunderbirdなどからローカルのメールサーバーにメールを送るのはどうしたらよいかということでした。

 結局は、ローカル受信テスト用のアカウントを新たに作成して、そのアカウントの送信(SMTP)サーバーのサーバー名にlocalhost、ポート番号に起動時に設定したもの(上記サイトだと10025)にすればいいだけでした。

 ユーザー名とパスワードの設定の部分は、指定しないにします。

Thunderbirdで送信サーバーを設定する場合

 ※Thunderbirdでは、アカウントの設定と送信サーバーの設定が別の項目として分かれているので注意が必要です。

 あとは、この作成したアカウントでメール作成を行い、送信すればオッケーです。上記サイトの例だと宛先を@example.comで終わるアドレスにしないと受信されません。どんなアドレスでも受信してほしい場合は、server.filter_rcpt の部分をコメントしておけばいいと思います。

Let’s enjoy testing!

railroadを用いたER図作成

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

KBMJでRuby on Rails を使ったweb開発に携わっているワイYといいます。

今回は、railroadを用いてRailsアプリのER図を作成してみたいと思います。

実行環境

OS Windows XP

Rails-1.2.5

postgres-8.2.5

graphviz-2.16.1 (railroadで出力したファイルを表示、変換するのに使用します)

etc

実行手順

gemを使ってrailroadをインストールします。gem install railroad

・ER図を生成したいrailsアプリのルートに移動します。

・下記のコマンドを実行すると、モデルのER図(models.dot)が作成されます。railroad -o models.dot -M
補足:-MとするとモデルのER図が生成され、-Cに変更するとコントローラーのER図が生成できます。-oで出力先を指定する事もできます。

・出力された.dotファイルはGraphvizを使う事で、表示させたり、jpgやpngなどに変換する事ができます。

・実際にできた画像は下図のようになります。

railroad

RailsでAmazon APIを利用する

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。
KBMJのプログラマのx5rです。

今回はRailsからAmazonAPIを利用してみようと思います。

環境

Railsの環境が既に構築されているものとします。
ちなみに私の環境は

Mac : IntelMac
OS : Mac OS X 10.5.1 Leopard$ script/about
About your application’s environment
Ruby version              1.8.6 (i686-darwin8.10.3)
RubyGems version          1.0.1
Rails version             2.0.2
Active Record version     2.0.2
Action Pack version       2.0.2
Active Resource version   2.0.2
Action Mailer version     2.0.2
Active Support version    2.0.2
Application root          /Users/username/dev/doruby
Environment               development
Database adapter          mysql

となっています。

それではAmazonAPIを使ってみます。

Amazon Web Serviceアカウントの取得

Amazon Web Serviceを利用するためには、ショッピング用とは別のアカウントが必要になりますので、持っていない場合はAmazon Web Serviceから取得します。

Amazon::Ecsをインストール

Amazon Web Serviceを利用するためのgemsライブラリ

Amazon::Ecs

をインストールします。$sudo gem install amazon-ecs

Railsプロジェクトを作成

$rails amazon
$cd amazon

API keyの設定

config/environment.rbで上記でインストールしたAmazon::Ecsを読み込み、そして上記で取得したAmazon Web Serviceを利用するためのAPI keyを設定します。

・・・
#一番下に記述
require ‘amazon/ecs’
Amazon::Ecs.debug = true
Amazon::Ecs.options = {
  :aWS_access_key_id => “XXXXXXXXXXXXXXXXXXXX”,
  :associate_tag => “xxxxxx-22”,
  :country => :jp
}

Modelの作成


Amazon Web Serviceから取得したデータを設定するモデルを作成します。

ここでは特にDBにはアクセスしないので、ActiveRecordを継承しないモデルを作成します。$ less app/models/item.rb
class Item
  attr_accessor :asin, :title, :image, :url
  def initialize(asin, title = nil, url = nil, image = nil)
    @asin = asin
    @title = title
    @url = url
    @image = image
  end
end

Controllerの作成

Amazon Web Serviceにアクセスするコントローラーを作成します。

今回はAmazonの音楽カテゴリから検索するようにします。
$script/generate controller amazon
$ less app/controllers/amazon_controller.rb
class AmazonController < ApplicationController
  def index
    if request.get?
    else
      @keyword = params[:keyword]
      res = Amazon::Ecs.item_search(@keyword, {
        :search_index => ‘Music’,
        :response_group => ‘Medium’,
        :sort => ‘salesrank’
      })
      @items = []
      res.items.each do |item|
        @items << Item.new(
          item.get(‘asin’),
          item.get(‘itemattributes/title’),
          item.get(‘detailpageurl’),
          item.get_hash(‘smallimage’)
        )
      end
    end
  end
end

Viewの作成

  • layoutを作成

$ less app/views/layouts/application.rhtml
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” lang=”ja” xml:lang=”ja”>
<head>
<meta http-equiv=”Content-Language” content=”ja” />
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta http-equiv=”Content-Style-Type” content=”text/css” />
<meta http-equiv=”Content-Script-Type” content=”text/javascript” />
<meta http-equiv=”imagetoolbar” content=”no” />
<title>Amazon Web Service</title>
<%#= stylesheet_link_tag “screen”, :media => “all” %>
</head>
<body>
  <%= @content_for_layout %>
</body>
</html>

  • 検索/結果ページを作成

$ less app/views/amazon/index.rhtml
<p>Amazonからデータを取得</p>
<%- form_tag :controller => ‘amazon’, :action => ‘index’ do -%>
  <%= text_field_tag “keyword”, @keyword %><%= submit_tag “アマゾンで検索” %>
<%- end -%>

<%- if @items && @items.size > 0 -%>
<p>検索結果</p>
<table>
  <%- @items.each do |item| -%>
  <tr>
    <td><%= link_to(image_tag(item.image[:url], :size => “#{item.image[:width]}x#{item.image[:height]}”, :alt => item.title), item.url, :target => ‘_blank’) %></td>
    <td><%= item.asin %></td>
    <td><%= item.title %></td>
  </tr>
  <%- end -%>
</table>
<%- end -%> 

Webrickを起動 

$ script/server  

http://localhost:3000/amazonにアクセスすると検索ボックスが表示されますので、検索したいアーティス名を入力し、「アマゾンで検索」ボタンを押下すれば、Amazonから検索された商品が表示されます。

amazon_ecs

RubyGems って単語よく出てきますよね?

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんばんは

KBMJ@O2です。

Ruby でシステム開発する場合、よくRubyGemsという言葉が

出てきますが、今回は、RubyGemsとはなにかを、ちょっぴり用語集に

追加しようと思います。

 RubyGems とは?

Ruby のライブラリパッケージ管理システムです。

これを用いることにより、さまざまな Ruby 用ライブラリを簡単にインストール

することができるようになります。

また、すでにインストールされているライブラリのバージョンアップも行うことが

できます。

実際に使い方は、Do Ruby(ドゥールビー)内で、紹介していますので参考

にしてみるて下さい。…

Ruby on Rails ってなになに?

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

おはようございます。

KBMJ@O2です。

第一弾は、「Rubyとは」を書いてみましたが、実際のシステム開発ではフレームワークを使ってシステム開発を行うのですが、そのフレームワークが・・・

Ruby on Railsとは

第一弾で説明したRubyを使ったWebアプリケーション開発用フレームワークです。


Ruby On Rails は、短時間で高機能なWebアプリケーションを構築することができます。
Ruby自体の特徴であるシンプルな文法なので、書きやすくて、比較的簡単に作成できデータベースの設定も含めた、サービスを実際に動作させるまでの手続き、設定がスムーズに素早く、簡単にできることが最大の特長です。

また、MVCアーキテクチャに基づいて構築されているので、開発しやすくなっています。

ちょー入門、Webサーバ構築で知ってて損をしない用語(1)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

KBMJ@O2です。

今回は、Webシステムを作成するにあたり、Linuxで構築する場合の

サーバ周りの用語を紹介してみます。  

SSH とは

 暗号や認証の技術を利用して、安全にリモートコンピュータと通信する

ためのプログラムです。

 これがあることにより、Webサーバの場所に行き直接操作する必要が

なくなるので便利です。 

Xen とは

  Xen(ゼン)とはコンピュータの仮想化技術を実現するオープンソース

ソフトウェアのことです。

 これがあれば、1台のサーバ上に複数のOSを入れて動かせるので

複数のプロジェクトで複数のテスト環境を構築する時などは役に立ちます。  

Apache とは

 世界中でもっとも多く使われているWebサーバソフトウェアです。

HTTP(ハイパーテキストトランスファープロトコル)を、クライアントに出力

するためのHTTPDのデーモン(*)の一種です。

*:UNIXOSにおいて、メモリに常駐して様々なサービスを提供する

ソフトウェアの事です。

gemコマンドの紹介

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

皆さんはじめまして。

RubyGems の紹介をします。

一般的に Ruby 用ライブラリは RubyGems を採用していて、サイトで検索しても

RubyGems によるインストール方法しか掲載されていないケースが多くあります。

今回は、日常的なパッケージ管理の方法を中心に、基本的な使い方をご紹介します。
なお、RubyGems でパッケージを利用する際の使い方で、パッケージ作成などは
続編?でご紹介できればと思っておりますので、ご了承くださいませ。。。

RubyGemsのインストール
http://rubyforge.org/frs/?group_id=126

下記URLからRuby(ruby185-24.exe)をインストールをすることでRubyGemsも含まれています。
http://rubyforge.org/frs/?group_id=167 からWindows 用インストーラでインストール
※全てデフォルト設定でインストールしました。

インストールが完了したら、コマンドプロンプトを起動して、
下記のコマンド類を実際に試してみましょう。

◆バージョン確認# gem env
 RubyGems Environment:
   – VERSION: 0.9.2 (0.9.2)
   – INSTALLATION DIRECTORY: c:/ruby/lib/ruby/gems/1.8
   – GEM PATH:
      – c:/ruby/lib/ruby/gems/1.8
   – REMOTE SOURCES:
      – http://gems.rubyforge.org/

 # gem -v
 0.9.2

◆パッケージのインストール# gem install パッケージ名

c:/ruby/lib/ruby/gems/1.8/gems 配下にパッケージのフォルダが配置されます。


◆パッケージのバージョン検索# gem search -r パッケージ名

◆パッケージのアップデート# gem update パッケージ名

◆パッケージのインストールリスト# gem list パッケージ名

◆パッケージの消去(最新バージョンは残る)# gem cleanup パッケージ名

◆パッケージのアンインストール# gem uninstall パッケージ名

◆コマンドのヘルプ# gem help コマンド名

以上、最後までお付き合い頂きありがとうございした。

コマンドは他にもたくさんあるので、実際に自分の環境を使用して是非試してみてください。

HTMLエスケープ

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんばんは。

kbmjのプログラマーのmimiです。

rubyのプログラムを書く上での基本的な注意をすべき点を書いてみたいと思います。

 今回は、hメソッド「<%=h … %>」についてです。

rubyのプログラムを読み始めた当初に見た時に、何か分からず「h」では検索しづらかったことを思い出しまして、まずはこれについて触れようと思います。

 hメソッド「<%=h … %>」とは、

<%= … %>を使って画面表示を行う際に利用する、HTMLエスケープのことです。

特に、どのような値が表示されるのかが分からない場合には必ず利用してください。

下記のとおりにエスケープ処理をします。

「 & 」    ⇒ &amp;


「 ” 」   ⇒ &quot;


「 < 」     ⇒ &lt;


「 > 」    ⇒ &gt;

hは、「html_escape 」と略さず書いてもOKですが、

面倒ですよね。

次回も、初歩的な注意点などについて

触れていきたいと思います。

RadiantCMSのインストール(1)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

はじめまして。
KBMJでSIを担当している花吹雪です。

RadiantCMSは、Ruby on Railsをベースにして開発されたCMSアプリケーションです。
え?CMSって何かって?ハハハ。実は僕にもよくわかっていないんだ。
じゃあ、まずはそこから説明してみようか。

難しく言うと、コンテンツマネージメントシステム(CMS:Content Management System)の略。
簡単に言うと、ページのデザインとかコンテンツの管理を、ソフトウェア
自動的に行えるようにしたものです。 いわゆる「ブログ」がまさにそうだよね。
あと「Wiki」というのも聞いたことがあるかな。
ああいった、特にデザインやデータベースの知識がなくても、ブラウザ上から簡単に
レイアウトやデータの蓄積ができるものを言うんだね。

で、このCMSを、Ruby on Railsベースで開発したものがRadiantCMSってわけ。
とりあえずインストールしてみて、あとは使ってから考えてみようか。

開発環境

OS:CentOS5
Rubyバージョン:1.8.6
RubyGemsバージョン:0.9.4

今回は上記の環境で作業を行いました。Ruby等のインストール方法は
ここでは触れません。他の誰かが書いてくれてると信じたい。

インストール

インストールRuby Gems を使います。これは簡単だね。$ gem install radiant

新しいプロジェクトの作成

インストールが出来たら新しいプロジェクトを作成します。$ radiant –database [database adapter] [path]

[database adapter] には、「mysql」「postgres」「sqlite3」のいずれかを設定します。
自分の環境で使うデータベースに合わせてね。
[path] には、プロジェクトを作成する場所のパスを指定します。

例えば、使用するデータベースMySQLで、「/home/radiant_project」以下に
新しいRadiantプロジェクトを作る場合はこんな感じ。$ radiant –database mysql /home/radiant_project

データベースの設定

新しいプロジェクトを作成したら、今度はデータベースの設定を行います。
以下の設定ファイルに、自分の環境に合わせて設定を行ってください。$ vi /home/radiant_project/config/database.yml


development:
   adapter: mysql
   database: radiant_project
   username: root
   password:rootpass
   host: localhost
   encoding: utf8


test:
   adapter: mysql
   database: radiant_project_test
   username: testname
   password: testpass
   host: localhost
   encoding: utf8


production:
   adapter: mysql
   database: radiant_project
   username: root
   password: rootpass
   host: localhost
   encoding: utf8

ん?なんで同じような設定が3箇所もあるの?と思った方。
いや、おっしゃる通りです。

ここからは受け売りなんだけど、どうもRailsアプリケーションには「environments」と
呼ばれる概念があるらしく、「testing」「development」「production」の3つの設定に
分かれてるんだって。
で、「test」環境は、unitテストやfunctionalテストの際に利用。
「development」環境は、Radiant開発者が利用。
「production」環境は、通常のRadiantの利用に最適化されている環境だそうです。
だから、設定ファイルもそれらの環境ごとに分かれてるとの事。


あと、わかってるとは思うけど、上で設定しているデータベースとかユーザとかは、
あらかじめ用意しておいてね。

今回はここまで

あとはデータベースを初期化して、Radiantを実行すれば終わりなんだけど、
結構長くなっちゃったので続きは次回に。
それに、どうせなら日本語化してみたいとか思わない?
それも含めて、次回、詳しく説明します。
お楽しみに!

RubyでActiveRecordを使わないでDBに接続する方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

はじめまして。

KBMJでエンジニアをしているTrinityTです。

さて、通常RubyOnRails環境でDBアクセスする場合、ActiveRecordを使用します。Rails開発ではもちろん僕も恩恵にあやかっていたのですが、バッチ処理の実装中、Ruby単体でDBアクセスしたほうが良いのでは?というケースがでてきました。

そこでコレを機会にActiveRecordを使わないでアクセスする方法を調べてみました。

ここではMySQLPostgreSQLで試してみることにします。

検証した環境

OS:WindowXP SP2

Ruby:1.8.6(インストール済)

RubyGems:0.9.5(インストール済)

MySQL編

(1)DBコネクタインストール

手っ取り早くRubyGemを使ってインストールします。

C:\>$gems install mysql

(2)ソース上で「require ‘mysql’」を記述してモジュール読み込み

 $KCODE=”UTF8″
 require ‘mysql’

 # 接続

 my = Mysql::new(“localhost”,”hoge”,”hoge”,”hoge”)
 # 文字セットをUTF-8に設定

 my.query(“set character set utf8”)

 res1 = my.query(“select * from huga”)
 my.close

※API説明

Mysql::new(“host”, “user”, “passwd”, “db”)

host:ホスト名

user:ユーザ

passwd:パスワード

db:DB名

PostgresSQL編

(1)DBコネクタインストール

C:\>$gems install postgres

(2)ソース上で「require ‘postgres’」を記述してモジュール読み込み

 $KCODE=”UTF8″
 require ‘postgres’

 # インスタンス生成

 pos = PGconn.connect(“localhost”, 5432, “”, “”, “hoge”,”hoge”,”hoge”)
 res1 = pos.exec(“select * from huga”)
 pos.close

※API説明

PGconn.connect(pghost, pgport, pgoptions, pgtty, dbname, login, passwd)
pghost : サーバのホスト名(文字列)
pgport : サーバがlistenしているポート番号(整数)
pgoptions : backendを起動する際のオプション(文字列)
pgtty : backendがデバッグメッセージを表示するtty(文字列)
dbname : 接続するデータベース名(文字列)
login : ユーザ名(文字列)
passwd : パスワード(文字列)

どちらのDBにも思いのほか簡単にアクセスできました。

WebアプリをRailsで作る分にはほぼ使う機会は無いと思いますが、機会があれば活用してみてください。

Railsのキャッシュ機能を用いて動的ページを静的ページにする方法を紹介

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

TOPページにランダムに表示させたいコンテンツがある場合、アクセス毎にページの一部が変わるような場合は動的にページを作成することになりますが、

そんなに目まぐるしく変わらなくても良い、例えば10分に1回の頻度で内容が変わるくらいで十分で、それ以上に一番アクセスが多い(であろう)TOPページの負荷を軽減したい…そんな時に使うのが、今回紹介するページキャッシュ機能と定期的にファイルを削除するバッチプログラムを組み合わせた
静的ページ書き出し機能です。
 

ページキャッシュ機能
例えばTOPページを表示するコントローラがmainでアクションがindexの場合、

(RAILS_ROOT)/config/routes.rb内に

 map.connect ‘/’, :controller => “main”, :action=> “index”
 map.connect ‘/index.html’, :controller => “main”, :action=> “index”

と記述することで

http://(ドメイン名)/

へアクセスした際に http://(ドメイン名)/main/ のコンテンツを表示するようになります。
その際TOPページを表示しているコントローラー((RAILS_ROOT)/main_controller.rb)の中身は

class MainController < ApplicationController

  def index
    (ここにTOPページ内で実行するプログラムを書きます)
  end
 
end

こんな感じになります。

このままですと、アクセス毎にHTMLが作成・表示しているのですが、
ここに1行、以下のコードを追加します。

caches_page :index

class MainController < ApplicationController

  caches_page :index

  def index
    (ここにTOPページ内で実行するプログラムを書きます)
  end
 
end

これにより、同コントローラ内の指定したアクション(この場合indexです)にアクセスした際に
その時作成したHTMLをサーバー内に保存し、それ以降のアクセスに対しては保存したHTMLを表示するようになります。
HTMLファイルの保存場所はpublic配下に
public/コントローラ名/アクション名.html
アクションがindexの場合は


public/コントローラ名.html


という名前で保存されます。
今回はコントローラ名がmain、アクション名がindexですので


public/main.html


になります。

これにより、初回アクセス時にHTMLファイルを生成・表示・保存を行い、2回目以降は作成したファイルを表示するようになりました。
ですが、このままではせっかく動的に作成したコンテンツが何度アクセスしても見た目が変わらなくなってしまいます。
ですので、このページキャッシュ機能を定期的に削除するバッチ処理を設定します。


ファイル削除バッチ
上のページキャッシュはRuby on Railsの機能ですが、こちらはlinuxの機能を使います。
crontabを編集して自動でファイルを削除するコマンドを登録します。
crontab -e #crontabを編集
編集画面にて以下のコードを追加

0-59/10 * * * * rm /(RAILS_ROOT)/public/main.html

Railsのプログラムを/opt/rails/test/に作成している場合は0-59/10 * * * * rm /opt/rails/test/public/main.html
になります。

これで、毎時10分にキャッシュを削除してくれます。


この2つを組み合わせることで、10分毎に中身が変わるコンテンツの出来上がりです。
主な作業はcaches_page の追加と crontab の登録の2点です。
とてもカンタンに出来ますので、是非お試しください。


GOOD RAILS!!

RMagickの使い方

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

はじめまして、kbmjでruby on railsの開発をしている中平です。

今回私は、RMagickというrubyで画像処理を行うライブラリの使い方を説明いたします。


まず、RMagickについて。

RMagickとはその名のとおり、ImageMagickをrubyで扱えるようにしたものです。

 ですのでRMagickを使う場合は、

ruby本体,ImageMagick,RMagickの3つが必要です。

 

今回はインストール方法は省きまして、インストール後の使い方とか機能について紹介します。

 ImageMagickでできることはたいていRMagickでも出来ますので、rubyだと簡単にできることを知っていただければと・・・・

 
■rmagickの使い方

説明するよりも実際に試したほうがわかりやすいと思いますので、
rubyとrmagickを使って画像処理をするサンプルコードを記載します。

これを適当に保存して、画像を一枚用意していただき、実行すると

画像処理され保存されていきますので、試してみてください。 

サンプルだと、画像名はhogehoge.jpgを使っています。 

————————————-

require “RMagick” #RMagickを使えるように
#hogehoge.jpg画像を別名で保存
img = Magick::ImageList.new(“hogehoge.jpg”)
img.write(“orig.jpg”)

#画像を反転し保存
img = Magick::ImageList.new(“orig.jpg”)
img_flop= img.flop #左右反転
img_flip= img.flip #上下反転
img_flop.write(“flop.jpg”)
img_flip.write(“flip.jpg”)

#2枚の画像をくっつける
#同じサイズの画像じゃないとおかしなことに・・・・
img_append = Magick::ImageList.new(“orig.jpg”,”flop.jpg”)
img_append = img_append.append(false) #trueだと上下、falseだと左右にくっつける
img_append.write(“append.jpg”)

#画像に文字を挿入
img_string = Magick::ImageList.new(“orig.jpg”)

md = Magick::Draw.new

md.annotate(img_string, 0, 0, 0, 0, “hogehoge”) do

 md.gravity = Magick::NorthGravity #表示位置
#NorthWestGravity ( 左上 )
#NorthGravity ( 上 )
#NorthEastGravity ( 右上 )
#WestGravity ( 左 )
#CenterGravity ( 真中 )
#EastGravity ( 右 )
#SouthWestGravity ( 左下 )
#SouthGravity ( 下 )
#SouthEastGravity ( 右下 )

 md.pointsize = 30 #フォントサイズ

 md.fill = “blue” #文字色

 md.stroke = “yellow” #文字の縁取り色

end

img_string.write(“string.jpg”)

#波紋
img = Magick::ImageList.new(“orig.jpg”)
img_string=img_string.wave(amplitude=10.0, wavelength=100.0)
img_string.write(“wave.jpg”)

#画像をぼかす
img = Magick::ImageList.new(“orig.jpg”)

motion_blur=img.blur_image(radius=10.0, sigma=10.0)

motion_blur.write(“blur.jpg”)

#画像の回転
img = Magick::ImageList.new(“orig.jpg”)

#右に90度回転
rotate=img.rotate(90)
#左回りの場合は-90
#rotate=img.rotate(-90)
rotate.write(“rotate.jpg”)

#画像をねじる?
img = Magick::ImageList.new(“orig.jpg”)
swirl=img.swirl(360)
swirl.write(‘swirl.jpg’)


#画像をねじる(gif動画)
img = Magick::ImageList.new(“orig.jpg”)

animation = Magick::ImageList.new
animation << img.first.copy
30.step(360,45) { |degrees| animation << img.swirl(degrees) }

animation.delay = 20
animation.iterations = 10000

animation.write(‘swirl.gif’)

——


他にもいろいろ画像処理機能があり、紹介しきれないのですが、また

面白い画像処理機能があったら紹介しようと思います。

DRBDのインストール

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちはtacchiです。

DRBD

DRBDとはDistributed Replicated Block Deviceの略で、本家WEBサイトは http://www.drbd.org/です。

ブロックデバイス全体をネットワーク経由でミラーリングしています。
要は、昔はrsyncとcronを利用してミラーリングしていたものを、DRBDでできちゃうよということです。

Ruby案件で必要だったのでDRBDとHeartBeatを利用させてもらいました。
なかなか苦戦しましたが、先駆者がのこしてくれているありがたい情報を元に設定を行っていきました。
参考にさせていただいたのは、以下のサイトです。

Webサーバが2台あり、テストサーバから本番サーバへのデプロイを同時に反映させること、差異のないアプリケーションを稼働させるという意図から、DRBDを利用。
テストサーバとWebサーバをDRBDで結ぶという案もありましたが、実際に稼働しているアプリケーションを容易に変更できないようにという意図から、テストサーバとWebサーバ間はrsyncで結び、デプロイシェルを作成し、それを叩けば本番に反映できるようにしました。
(やり方は、沢山考えられますが、今回はこれで行きました。)


じゃぁ実際の設定を以下に示します。


■まず、DRBDのインストールから(Web01とWeb02にインストール)wget http://oss.linbit.com/drbd/8.0/drbd-8.0.5.tar.gz
tar zxvf drbd-8.0.5.tar.gz
cd drbd-8.0.5
make rpm
cd dist/RPMS/x86_64
rpm -ivh drbd-8.0.5-3.x86_64.rpm drbd-km-2.6.18_8.1.8.el5-8.0.5-3.x86_64.rpm
drbd-debuginfo-8.0.5-3.x86_64.rpm


■設定ファイルをいじりましょう。(/etc/drbd.conf)
※もちろんWeb01とWeb02に設定resource r0 {

protocol C;

startup {
degr-wfc-timeout 120; # 2 minutes.
}

disk {
on-io-error detach;
}

syncer {
rate 100M;
}

on hogeweb01 {
device /dev/drbd0;
disk /dev/sda3;
address 192.168.2.79:7789;
flexible-meta-disk internal;
}

on hogeweb02 {
device /dev/drbd0;
disk /dev/sda3;
address 192.168.2.222:7789;
meta-disk internal;
}


■iptablesを利用しているならiptablesの設定も必要!
tcpの7789ポートを利用しますので、アクセス許可を行います。
※もちろんWeb01とWeb02に設定/sbin/iptables -I INPUT -p tcp -m tcp –dport 7789 –syn -j ACCEPT
/etc/rc.d/init.d/iptables save
service iptables restart


■サービスの起動をしてみましょう 
※Web01とWeb02で起動。service drbd start


■使ってみましょう
 Web01 以下を実行cat /proc/drbd
上記コマンドをたたくと以下が表示される。今は両方セカンダリですよーって表示。
cs:Connected st:Secondary/Secondary


■じゃぁWeb01をプライマリに変更しましょう。(Web01で実行)drbdsetup /dev/drbd0 primary
cat /proc/drbd
以下の表示に変わったはず。
cs:Connected st:Primary/Secondary


■じゃぁマウントしてみましょう。(Web01で実行)mount /dev/drbd0 /mnt/drbd0


■ファイルを作っておいてみる(Web01で実行)touch /mnt/drbd0/test


■マウント解除して、Web02の方でmountできるようにsecondaryにする。(Web02で実行)umount /dev/drbd0
drbdsetup /dev/drbd0 secondarydrbdsetup /dev/drbd0 primary
(primaryにする。)
mount /dev/drbd0 /mnt/drbd0
ls /mnt/drbd0


こちらにもtestができてればOK

これで設定完了です。

最近人気な記事