牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

レイルに乗ってみた〜Rails of Ruby on Rails その04「RMagickで躓いた(つдT)」

レイルに乗ってみた〜 目次
書籍『Rails of Ruby on Rails ~Case of LOCUSANDWONDERS.COM~』で勉強してみた(P83〜)

画像のアップロード FileColumnプラグイン

gitからインストール

script/plugin install git://github.com/tekin/file_column.git
removing: /Users/username/work/locus/vendor/plugins/file_column/.git
Initialized empty Git repository in /Users/username/work/locus/vendor/plugins/file_column/.git/
remote: Counting objects: 33, done.        
remote: Compressing objects: 100% (29/29), done.        
remote: Total 33 (delta 3), reused 30 (delta 3)        
Receiving objects: 100% (33/33), 124.74 KiB | 118 KiB/s, done.
Resolving deltas: 100% (3/3), done.

RMagickのイントール

FileColumnを使うにはRMagickとか必要らしい。さらにそれをインストールするのにX11.appも必要みたい。

  1. MacOSX10.4のインストールディスクにあるOptional Installs.mpkgでX11.appだけインストール。
  2. MacPortsで「rb-rmagick」インスコ(かなり時間かかる)
sudo port install rb-rmagick
RMagickのイントール失敗の軌跡(一部抜粋)
  1. http://rmagick.rubyforge.org/install-osx.html』さんを参考に
  2. sudo gem install rmagick
    • ERROR: Error installing rmagick: ERROR: Failed to build gem native extension.〜
  3. それからsudo port install rb-rmagickしたら
    • 『Please perform 'port clean ImageMagick' or specify the force option.』
    • sudo port clean ImageMagick した
    • MacPortsでダウンロード失敗するから、ひとつひとつ手動で...
  4. その他いろいろ(つдT)
MacPortsでダウンロード失敗する場合、手動で/opt/local/var/macports/distfiles/にファイルを追加して再実行
  • /opt/local/var/macports/distfiles/に追加したディレクトリ一覧
  • 入れるとこが分かりにくいファイル

テーブルにカラムを追加

script/generate migration add_image_to_entry image:string
      exists  db/migrate
      create  db/migrate/20080909050558_add_image_to_entry.rb
Loaded suite script/generate
Started

Finished in 0.000456 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

ここでマイグレーション実行。

rake db:migrate
(in /Users/username/work/locus)
== 20080909050558 AddImageToEntry: migrating ==================================
-- add_column(:entries, :image, :string)
   -> 0.0223s
== 20080909050558 AddImageToEntry: migrated (0.0227s) =========================

Loaded suite /opt/local/bin/rake
Started

Finished in 0.000673 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

モデルの修正

app/models/entry.rbに一行追加

  file_column :image, :magick => {:geometry => '458x360>'}

フォーム変更

app/views/entries/_form.html.erbに修正・追加

<% form_for(@entry, :html => {:multipart => true}) do |f| %>
:
<p>
  <%= f.label :image, '画像' %>
    <%= f.file_field :image %>
</p>

ブラウザで確認


画像を表示するようにViewを修正

app/views/entries/_entry.html.erbに追加

  <%= image_tag(url_for_file_column(entry, :image)) \
      if entry.image %>
ブラウザで確認してみる


メモ

  • 毎回インストール関係で躓いてる気がする...
  • 表示されたものはすべて目を通すべきかも
  • 今のところRubyはほとんど関係ない感じ
  • Railsググると情報たくさん出てくる。これ重要。


えらく時間かかったなぁ...もう挫折しそう(つдT)