Uploading for Hobo app

Originally written by brett on 2008-11-03.

What if you want to upload a file to your app? You can use the attachment_fu plugin.

The model code needs filename and size and perhaps other fields depending on your implementation, surf over to techno-weenie for info on what attachment_fu supports. This example assumes the model is named ImportProject.

fields do
    content_type :string
    filename     :string    
    size         :integer
  has_attachment :storage => :file_system
           , :max_size => 100.megabytes
           , :path_prefix => "public/import_projects"

To get the plugin from the git repository change directory over to the plugins directory clone from git.

git clone git://github.com/technoweenie/attachment_fu.git

You may need this patch:

create a file appname/lib/attachment_fu_patch.rb

require 'tempfile'

class Tempfile
  def size
    if @tmpfile
      @tmpfile.fsync # added this line

And this needs to be added to: appname/config/environment.rb

require 'lib/attachment_fu_patch.rb'


# Be sure to restart your server when you modify this file

# Uncomment below to force Rails into production mode when
# you don't control web/app server and can't set it the proper way
# ENV['RAILS_ENV'] ||= 'production'

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.1.0' unless defined? RAILS_GEM_VERSION

# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')

require 'lib/attachment_fu_patch.rb'

Rails::Initializer.run do |config|

How about some view code? appname/app/views/import_project/new.dryml

<%= error_messages_for :import_project %>

  <form: enctype="multipart/form-data">
    <label>Choose File</label>
    <input type="file" name="import_project[uploaded_data]"/>
    <submit label="Upload File"/>

When you create a new import project you should have an upload button to select the file for uploading.

Edit this page