Macでrvm pkg install readlineやlibyamlするとSSL証明書問題で失敗する
MacでRuby環境を作るのにトラブルが絶えない。cURLの証明書が古いらしいので更新する必要があるが、cURL の証明書を更新するを試しても/usr/share/curlフォルダがなかったりする。
社内SNS SKIPアップデートでハマったことを調べたの
SKIPというより、Railsアプリケーションのアップデートだと思う。
いつもはまるところがあったので、ちょっと調べてみた内容を共有。
can’t activate , already activated locale-2.0.5
gemのバージョンがあってないときに出るらしい。今はいっているgemを見てみると・・・
>gem list locale *** LOCAL GEMS *** locale (2.0.5) locale_rails (2.0.5, 2.0.4)
2.0.5はそろっているけど、2.0.4がないのが怪しい。よって入れてみる。
gem install locale -v 2.0.4
すると進んだ。
uninitialized constant MysqlCompat::MysqlRes
migrateしたときに、様々な状況でこのメッセージが出る。Redmineのmigrateでも経験あり。
わかったのが、「gem install mysql」をたたくと20100404だと2.8.1がインストールされるが、それがうまくビルドできない場合があるみたい。その時は、gemのディレクトリに入って、自分makeして対応したのだけれど、昔のバージョン(2.7)はすんなりインストールできたので、「gem uninstall mysql -v 2.8.1」して「gem install gem install mysql -v 2.7」をたたくことにした。
すると以下のように怒られる。
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql. rake aborted! libmysqlclient.so.15: cannot open shared object file: No such file or directory
Rails2.2でmysql.rbドライバーが消えたらしい。
よって、「gem install mysql」してねっていうけどそれやったら怒られるんだってばさ・・・。
どうもmysql.soからlibmysqlclient.soが見えないという意味らしいの
で、以下を行う。(参考:ref:http://www.ruby-forum.com/topic/98177)
export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql:$LD_LIBRARY_PATH
これをやったあとにgem installすればうまくいった。
まとめ。
Railsのアップデートや様々なgemの共存は大変。
Railsアプリを作るときはgemのバージョンを固定して設定したほうがよさそうだと思ったのです。
WEBRickを起動しようとしたらSSLEAY32.dllが見つからなかったためと怒られる
SSLEAY32.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。
場合っていわれましても。
ということで調べてみると、maechang noteさんに似たような現象が。
序数 277 がダイナミック ライブラリ SSLEAY32.dll から見つかりませんでした。
なんか思い出した。Redmine0.8.0をWindows Vistaにいれてみたにも書いたけど、そのときはzlibがないって怒られた。
更に調べると、RubyStudyRoomさんのRuby1.9.1のWindows環境へのインストールを発見。limber.jpさんがコンパイルしてくれているので、OpenSSL関係のDLLをRubyのbinフォルダに突っ込んで解決。
まとめ。Rubyを使う場合は、zlib.dllとlibeay32.dllとssleay32が必要らしい。
Redmine0.8.0をWindows Vistaにいれてみた
Redmineインストールを参考にする。
必要なもの。
Ruby RubyGems Ruby on Rails 準備
まずは、Rubyインストール。
これがおわったらRubyGemsをインストール。ファイルをダウンロードしてきて、
ruby setup.rb
とすればOK。
つづいてRailsをいれる。gemを使えば以下のコマンドで簡単にできる。
gem install rails –include-dependencies
前はうまくいった記憶があるが、Railsを入れる時に、
C:\rubygems-1.3.1>gem install rails –include-dependencies C:/fujihara/Ruby/ruby-1.8.7-p72-i386-mswin32/lib/ruby/1.8/i386-mswin32/zlib.so: 126: 指定されたモジュールが見つかりません 。 – C:/fujihara/Ruby/ruby-1.8.7-p72-i386-mswin32/lib/ruby/1.8/i386-mswin32/zlib.so (LoadError)
と怒られた。zlib.soについて調べてみると、RubyLifeさんをみつけたので、zlibのページから「zlib compiled DLL, version 1.2.3, zipfile format」というのをみつけ、USってやつからダウンロード。
Rubyを入れたディレクトリのbinフォルダに「zlib1.dll」を「zlib.dll」というなまえで配置すればインストール完了。
Railsインストールをもっかいためしてみると成功した。
C:\rubygems-1.3.1>gem install rails –include-dependencies INFO: `gem install -y` is now default and will be removed INFO: use –ignore-dependencies to install only the gems you list Successfully installed rake-0.8.3 Successfully installed activesupport-2.2.2 Successfully installed activerecord-2.2.2 Successfully installed actionpack-2.2.2 Successfully installed actionmailer-2.2.2 Successfully installed activeresource-2.2.2 Successfully installed rails-2.2.2 7 gems installed Installing ri documentation for rake-0.8.3… Installing ri documentation for [...]
Ruby1.8.7 SVNからチェックアウトしていらないファイルを削除する
SVNとかCVSからチェックアウトしたファイルのうち、javaとjspファイル以外はいらないので、削除するためのスクリプトをRubyで書いてみた。
クラスとか使ってないです。
今回成長したのは、「logger.debug(“checkout #{dirname}”)」のように変数を文字列内に埋め込めることがわかったことかなー(ちっちゃ!)。
ちょっとずつ成長です。
# SVNからチェックアウト。 # INCLUDEで指定した拡張子以外を削除する。 require ‘logger’ logger = Logger.new(STDOUT) logger.level = Logger::DEBUG $KCODE=’UTF-8′ SEP=”\\” SVN_PATH=”http://localhost/svn” SVN_USER=”fujihara” SVN_PASSWORD=”fujihara” CO_PATH=”D:\\Study\\Ruby\\svn” FIND_PATH=”D:/Study/Ruby/svn” PATH_FILE=”./path.csv” INCLUDE=”java,jsp” logger.debug(“start”) # チェックアウト fr = open(PATH_FILE, “r”) while line = fr.gets line = line.chomp if line == “” next end dirname = line.sub(“/”, “”) dirname = dirname.gsub(“/”, “_”) logger.debug(“checkout #{dirname}”) dist = CO_PATH + SEP + dirname cmd = “mkdir #{dist}” logger.debug(“cmd #{cmd}”) system(cmd) cmd = “svn co #{SVN_PATH}#{line} #{dist} –username #{SVN_USER} –password #{SVN_PASSWORD}” logger.debug(“cmd #{cmd}”) system(cmd) end fr.close # 対象となるファイルを調べる includes = INCLUDE.split(/,/) includearray=[] for extension in includes includearray.push(Dir.glob(“#{FIND_PATH}/**/*#{extension}”)) end # 全ファイルの配列から、対象ファイルのパスを削除 pathes = Dir.glob(“#{FIND_PATH}/**/*”) for includepaths in includearray for [...]
Ruby1.8.7 CSVファイルを集計してHTMLに出力してみる
以下のようなcsvファイルを用意。
aaa.doc,fujihara,10 aaa.doc,aragaki,14 aaa.doc,nagasawa,39 bbb.doc,fujihara,9 bbb.doc,aragaki,14 bbb.doc,nagasawa,22 ccc.doc,fujihara,0 ccc.doc,nagasawa,17 ddd.doc,fujihara,8 ddd.doc,aragaki,29 ddd.doc,nagasawa,11
aaa.docにはfujiharaという文字が10回あります。という意味になっている。これをドキュメントごとに集計してみる。
はまったところ
Rubyでまじめに書いたのが今回が初めてだったので、全体的にはまったのだが、その中で調べてわかったことのみを記述。
loggerってないの?
あった。
require ‘logger’ class CreateHTML # コンストラクタ def initialize(input, output) @input = input @output = output @results = {} @log = Logger.new(STDOUT) @log.level = Logger::DEBUG end
これで「@log.debug(“俺は天才”)」のように使えるらしい。出力はSTDOUTにしている。
インスタンス変数って何?
今回はクラスを作ってみたけど、newしたクラスごとにもつ変数を「@fujihara」みたいに定義できるらしい。
連想配列みたいなのある?
ある。「@results = {}」みたいに宣言して「@results['fujihara']」みたいにいれれるらしい。ただ、書いてみたらうまくいってるように思えない。
# ファイル内容を集計 def count(line) array = line.split(/,/) if @results[array[0]] # 回数を集計 @results[array[0]] = @results[array[0]].to_i + array[2].to_i else @results[array[0]] = array[2].to_i end end
これを実行すると、「[["aaa.doc", 63], ["ddd.doc", 48], ["bbb.doc", 45], ["ccc.doc", 17]]」みたいになるおっかしいなーとおもったけど、配列の要素名をとる手段がよくわからずあきらめ。。
ファイル読み込みってどうやるの? fr = open(@input, “r”) # ファイル読み込み # 1行ずつ読み込んで集計 while line = fr.gets count(line) end fr.close
[...]
Ruby1.8.7 Windowsにインストールしてみた
Rubyが話題になったときに、ちょっと勉強したことがあったが、サーバで簡単なスクリプトを作り、ログファイルを処理したりするぐらいのレベルまで使えるようになりたくなった。
というよりならざるをえなくなった。仕事って怖いものだ。
インストール
Ruby-mswin32 (ja)さんからダウンロード。インストールガイドを見ながらインストール。
ここでは「C:\Program Files\Ruby\ruby-1.8.7-p72-i386-mswin32」においてbinにパスを通している。
コマンドプロンプトから「ruby -v」をうってVersionが表示されればOK。
Ruby on Rails2.0.2インストール
Windows環境、Ruby1.8.6でやってる。
インストール
コマンドプロンプトで以下を実行。
gem install rails –include-dependencies
依存関係のあるファイルもインストールしてくれる。
Bulk updating Gem source index for: http://gems.rubyforge.or
Successfully installed rails-2.0.2
Successfully installed activesupport-2.0.2
Successfully installed activerecord-2.0.2
Successfully installed actionpack-2.0.2
Successfully installed actionmailer-2.0.2
Successfully installed activeresource-2.0.2
Installing ri documentation for activesupport-2.0.2…
Installing ri documentation for activerecord-2.0.2…
Installing ri documentation for actionpack-2.0.2…
Installing ri documentation for actionmailer-2.0.2…
Installing ri documentation for activeresource-2.0.2…
Installing RDoc documentation for activesupport-2.0.2…
Installing RDoc documentation for activerecord-2.0.2…
Installing RDoc documentation for actionpack-2.0.2…
Installing RDoc documentation for actionmailer-2.0.2…
Installing RDoc documentation for activeresource-2.0.2… プロキシの設定が必要な場合
インストール時に
C:\>gem install rails –include-dependencies
ERROR: While executing gem … (Gem::RemoteFetcher::FetchError) 対象のコンピュータによって拒否されたため、接続できませんでした。 – connect(2)(Errno::ECONNREFUSED)
と怒られた。Railsをインストールするときにネット上にあるファイルをダウンロードしているらしいが、つながらなかったのが問題みたい。プロキシの設定を行ったらうまくいった。
C:\>set HTTP_PROXY=http://porxyのドメイン:ポート番号
C:\>gem install rails –include-dependencies
gemファイルを落としてきて手動でもできるみたいだけど、gemファイルを置く場所がわからなくて断念。(参考:http://blog.livedoor.jp/zep716/archives/21956177.html)
Ruby1.8.5で例外処理を試す
例外処理のサンプル。
#オリジナルで例外を作る
class SystemException < Exception
#trace、messageからメッセージを作成します。
def getAllMessage()
return “#{backtrace}: #{message} (#{self.class})”
end
end
password = “****X”
#トップレベルで例外処理
begin
if password == “*****” then
puts “認証OK”
else
raise SystemException.new(“認証に失敗しました。”)
end
rescue SystemException => e
#狙ってキャッチする例外
puts e.getAllMessage()
#投げなおす場合は↓
#raise
rescue => e
#予期せぬ例外をキャッチする場合
puts “SystemException以外の例外です。”
else
#begin節の最後までいったら実行される
puts “begin節は正常に終了しました。”
ensure
puts “後処理です”
end
実行結果
D:/daipresents/project/ruby/src/test/exception_test.rb:22: 認証に失敗しました。 (SystemException)
後処理です
Ruby1.8.5の変数と定数
ローカル変数 トップレベルの変数はプログラムの終わりまで有効 if true then
local_param = “ifの中”
end
puts local_param
実行結果
ifの中
ifの中 インスタンス変数
オブジェクトに固有の変数
class TestClass #クラス名は大文字始まり
TEISU = “定数” #定数は大文字から始まると勝手になる
@instance_param = “instance_param” #インスタンス変数
def printMessage(message)
puts @instance_param
@instance_param = “instance_param 2″
puts @instance_param
puts message
end
end
test_class = TestClass.new #インスタンス作成
test_class.printMessage(“message”)
実行結果
nil #一回目はnilになる
instance_param 2 #代入した値が入る
message クラス変数 再代入可能(定数は警告を出す) クラスの外から直接参照できない(継承されたクラスからは参照/代入可能) サブクラスから参照/代入が可能 インスタンスメソッドから参照/代入が可能 class ClassParam
@@class_param = 1
def getClassParam()
return @@class_param
end
end
class Child01 < ClassParam
p @@class_param += 1
end
class Child02 < ClassParam
[...]
Ruby1.8.5の制御構造
条件分岐 if value = 100 #変数の宣言 型はないのですべてオブジェクトとなる
#if文
if value > 90 then
puts “value is larger than 90″
elsif value > 50 then
puts “value is larger than 50″
else
puts “value is smaller than 50″
end
実行結果
value is larger than 90 if修飾子 #if修飾子
puts “おっけーだぜ” if true #右辺を評価して左辺へいく
実行結果
おっけーだぜ unless value = 100
#unless elsifはできない
unless value > 90 then
puts “90よりでかくないよーん”
else
puts “90よりでかいよーん”
end
実行結果
90よりでかいよーん unless修飾子 #unless修飾子
puts “否!” unless false #trueだとputsされない
実行結果
否! case #case
case value
when 0 .. 99 #0?99という意味
puts “0?99だよーん”
when 99 .. 100
puts “99,100だよーん”
Ruby1.8.5の字句構造
Ruby1.8.5のリテラル
文字列リテラル puts “いつの日もさりげない暮らしの中\n”
puts “いつの日もさりげない\”暮らし\”の中”
puts ‘いつの日もさりげない暮らしの中\n’ #\は無視される
puts %!いつの日もさりげない暮らしの中! #ダブルクォートと同じ
puts %Q!いつの日もさりげない”暮らし”の中\n! #ダブルクォートと同じ
%w!い つ の 日 も! #配列表現(['い', 'つ', 'の', '日', 'も']
%w!い\ つ の 日 も! #配列表現(['い つ', 'の', '日', 'も'])
%w!い つ の 日 も\n! #配列表現(['い', 'つ', 'の', '日', 'も<改行>'])
$name = “長澤まさみ”
puts “私は#{$name}”
puts “私は#$name”
puts ‘私は#{$name}’
実行結果
いつの日もさりげない暮らしの中
いつの日もさりげない”暮らし”の中
いつの日もさりげない暮らしの中\n
いつの日もさりげない暮らしの中
いつの日もさりげない”暮らし”の中
私は長澤まさみ
私は長澤まさみ
私は#{$name} 配列式 array = [1, 2, 3, 4, 5]
puts “array[0] = #{array[0]}”
array = %w[す ら い む]
puts “array[0] = #{array[0]}”
array = %W[す\nら い む]
puts “array[0] = #{array[0]}”
実行結果
array[0] = 1
array[0] = す
array[0] = す
ら
[...]
Ruby1.8.5のメソッド呼び出し
class MethodTest
TEISU = “定数ですわ”
def printMessage()
print() #()はつけてもつけなくても
print
end
def print()
puts “プリントごっこ”
end
def printNum(num1, num2, num3)
puts “#{num1}, #{num2}, #{num3}”
end
end
cls = MethodTest.new
cls = MethodTest::new #上とおんなじ
cls.printMessage()
cls.printMessage
cls.printNum(1, *[2, 3]) #printNum(1, 2, 3)と展開される
cls.printNum(1, 2, 3, *[]) #printNum(1, 2, 3)と展開される
puts MethodTest::TEISU #定数は::じゃないとだめー
実行結果
プリントごっこ
プリントごっこ
プリントごっこ
プリントごっこ
1, 2, 3
1, 2, 3
定数ですわ super
スーパークラスの呼び出し
super
super() ブロック付きメソッド呼び出し yield
僕について
Dai Fujihara
A hero can be anyone.
藤原大はマネージャでありアジャイル実践者だ。そして、プロジェクトリーダー、チェンジ・エージェント、アジャイルコーチ、トレーナーでもある。彼はまたRedmine、Jenkinsといった開発を支援するツール環境の整備や、アジャイル開発を活用した創造的なソフトウェア開発の支援を行っている。さらに、趣味は沖縄離島巡りらしい。
ここ最近の人気
開発ツールを使うと「思いやり」が減る(前半) #swat… 969 view(s)
3年使ったRedmineの使い方について共有したい10の… 440 view(s)
開発ツールを使うと「思いやり」が減る(後半) #swat… 414 view(s)
チームとタワーを創造せよ!マシュマロチャレンジでチームビ… 263 view(s)
社会人10年目をなんとか乗り越えたからエールを贈る… 200 view(s)
Javaで入力チェックに使える正規表現まとめ… 192 view(s)
Redmineプラグイン開発 – 史上最高のチームプラグ… 141 view(s)
LinkStationのようなNASを買ってもバックアッ… 112 view(s)
Redmineプラグイン開発 – パーキングロットチャー… 97 view(s)
log4j 1.2.14のAppender 92 view(s)
永久保存の本
Jonathan Rasmusson (著), 西村 直人 (翻訳), 角谷 信太郎 (翻訳)
アジャイルサムライ―それはソフトウェアを顧客に届ける猛々しきプロフェッショナルだ。本書では、圧倒的なアジャイルプロジェクトの姿を見せる。2011年爆発的にヒットしたアジャイル開発に情熱を持つエンジニアに届けたい本。
Mike Cohn (著), マイク コーン (著), 安井 力 (翻訳), 角谷 信太郎 (翻訳)
採用した現在のタイトルは、見積りや計画づくりといったプロセスを、アジャイルに進めなければならないと謳っているのだ。見積りと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。(イントロダクションより)
Venkat Subramaniam (著), Andy Hunt (著), 木下 史彦 (監訳), 角谷 信太郎 (監訳)
アジャイルな習慣とは一体何なのか?本書ではプラクティスを交えながら、その姿勢を読者に問いかけている。世代や役割をこえて色褪せない「アジャイル」に対する良書。Amazonレビュー
メアリー・ポッペンディーク (著), トム・ポッペンディーク (著), 高嶋 優子 (翻訳), 天野 勝 (翻訳), 平鍋 健児 (翻訳)
「トヨタ生産方式」を源流にする「リーン開発」をソフトウエア開発に取り入れるための具体的方法を紹介した本です。本書は、リーンの7大原則を「価値」「ムダ」「スピード」「人」「知識」「品質」「パートナー」に整理し、ソフト開発現場にどうしたら効果的に適用できるかを、多くの実例を交えながら具体的に説明します。
タグ
Agile ant Apache bash Eclipse GlassFish install Java Javascript kobo Linux log4j Management Maven Open Source PHP Pukiwiki Python Redmine Ruby Ruby on Rails Scrum Spring Struts Struts2 Subversion Test Tomcat Trac VBA Web WebDriver WebLogic Windows WordPress 働く 勉強会 嫁(ベータ) 思い出し笑う 我思う 旅する 映画/ドラマ 英語を話す 読むと聞く 過去を語るアーカイブ









