私はRuby、Rails、Herokuでの作業に慣れておらず、RMagickにも慣れていません。スタックオーバーフローで見つかったHerokuでRMagickを使用するためのいくつかの解決策を試しましたが、結果はありませんでした。これが私が遭遇した興味深い障害物です。
テキストが指定された長さを超えた場合にのみ変更する適切なフォントサイズを決定するための機能関数を作成しました。すべてが私のローカルマシンで美しく機能します。ただし、herokuで試行すると、RMagickがインストールされていないか、認識されていないように見えます。herokuコンソールがruby1.9.1を参照しているように見えますが、これはそれと関係がありますか?私はこの問題の調査を続けていますが、誰かがこの問題について何か考えを持っているなら興味があります。
どうもありがとう
*ローカルマシンルビー1.8.7レールコンソール***
1.8.7 :001 > def find_width(string, typeface, font_size)
1.8.7 :002?> max_width = 1087
1.8.7 :003?> type_size = font_size.to_i
1.8.7 :004?> label = Magick::Draw.new
1.8.7 :005?> label.font = typeface
1.8.7 :006?> label.pointsize = type_size
1.8.7 :007?> label.text_antialias(true)
1.8.7 :008?> label.text(0,0,string)
1.8.7 :009?> metrics = label.get_type_metrics(string)
1.8.7 :010?> width = metrics.width
1.8.7 :011?> if width > max_width
1.8.7 :012?> adjusted_size = type_size * max_width / width
1.8.7 :013?> return adjusted_size.to_i
1.8.7 :014?> else
1.8.7 :015 > return font_size
1.8.7 :016?> end
1.8.7 :017?> end
=> nil
1.8.7 :018 > find_width("HI", "blackjar-webfont", "263pt")
=> "263pt"
1.8.7 :019 > find_width("This is a test!", "blackjar-webfont", "263pt")
=> 185
1.8.7 :020 >
*ローカルマシンルビー1.9.2レールコンソール***
Loading development environment (Rails 3.0.7)
1.9.2p290 :001 > def find_width(string, typeface, font_size)
1.9.2p290 :002?> max_width = 1087
1.9.2p290 :003?> type_size = font_size.to_i
1.9.2p290 :004?> label = Magick::Draw.new
1.9.2p290 :005?> label.font = typeface
1.9.2p290 :006?> label.pointsize = type_size
1.9.2p290 :007?> label.text_antialias(true)
1.9.2p290 :008?> label.text(0,0,string)
1.9.2p290 :009?> metrics = label.get_type_metrics(string)
1.9.2p290 :010?> width = metrics.width
1.9.2p290 :011?> if width > max_width
1.9.2p290 :012?> adjusted_size = type_size * max_width / width
1.9.2p290 :013?> return adjusted_size.to_i
1.9.2p290 :014?> else
1.9.2p290 :015 > return font_size
1.9.2p290 :016?> end
1.9.2p290 :017?> end
=> nil
1.9.2p290 :018 > find_width("HI", "blackjar-webfont", "263pt")
=> "263pt"
1.9.2p290 :019 > find_width("This is a test!", "blackjar-webfont", "263pt")
=> 185
1.9.2p290 :020 >
** * ** * ** * HEROKU CONSOLE * ** * ** * ****
Loading production environment (Rails 3.0.7)
irb(main):001:0> def find_width(string, typeface, font_size)
irb(main):002:1> max_width = 1087
irb(main):003:1> type_size = font_size.to_i
irb(main):004:1> label = Magick::Draw.new
irb(main):005:1> label.font = typeface
irb(main):006:1> label.pointsize = type_size
irb(main):007:1> label.text_antialias(true)
irb(main):008:1> label.text(0,0,string)
irb(main):009:1> metrics = label.get_type_metrics(string)
irb(main):010:1> width = metrics.width
irb(main):011:1> if width > max_width
irb(main):012:2> adjusted_size = type_size * max_width / width
irb(main):013:2> return adjusted_size.to_i
irb(main):014:2> else
irb(main):015:2* return font_size
irb(main):016:2> end
irb(main):017:1> end
=> nil
irb(main):018:0> find_width("HI", "blackjar-webfont", "263pt")
NameError: uninitialized constant Magick from /app/vendor/bundle/ruby/1.9.1/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in `const_missing_from_s3_library'
from (irb):4:in `find_width'
from (irb):18
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.0.7/lib/rails/commands/console.rb:44:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.0.7/lib/rails/commands/console.rb:8:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.0.7/lib/rails/commands.rb:23:in `<top (required)>'from script/rails:6:in `require'from script/rails:6:in `<main>'
irb(main):019:0>
機能コード
def find_width(string, typeface, font_size)
max_width = 1087
type_size = font_size.to_i
label = Magick::Draw.new
label.font = typeface
label.pointsize = type_size
label.text_antialias(true)
label.text(0,0,string)
metrics = label.get_type_metrics(string)
width = metrics.width
if width > max_width
adjusted_size = type_size * max_width / width
return adjusted_size.to_i
else
return font_size
end
end