Hi folks,

i'm new to ROR. My Application works fine on my local machine, but if i
deploy my application the  pictures and files are not shown correctly.
Instead of taking the right uri
"http://adress/employee_public/pictures/0000/0010/not.gif"; it takes the
uri "http://adress/pictures/0000/0010/not.gif"; like on my local machine,
where the paths looks like this:
http://localhost:3000/pictures/0000/0010/not.gif

I use attachment_fu for handling uploads.

Everything in the application works fine, except the images and files.
Where is the problem. My server runs Apache/2.2.3 (Debian) mod_jk/1.2.26
Phusion_Passenger/2.0.3 PHP/4.4.4-8+etch6 mod_ssl/2.2.3 OpenSSL/0.9.8c

My file_system_backend.rb:

   1. require 'ftools'
   2. module Technoweenie # :nodoc:
   3.   module AttachmentFu # :nodoc:
   4.     module Backends
   5.       # Methods for file system backed attachments
   6.       module FileSystemBackend
   7.         def self.included(base) #:nodoc:
   8.           base.before_update :rename_file
   9.         end
  10.
  11.         # Gets the full path to the filename in this format:
  12.         #
  13.         #   # This assumes a model name like MyModel
  14.         #   # public/#{table_name} is the default filesystem path
  15.         #   RAILS_ROOT/public/my_models/5/blah.jpg
  16.         #
  17.         # Overwrite this method in your model to customize the
filename.
  18.         # The optional thumbnail argument will output the
thumbnail's filename.
  19.         def full_filename(thumbnail = nil)
  20.           file_system_path = (thumbnail ? thumbnail_class :
self).attachment_options[:path_prefix].to_s
  21.           File.join(RAILS_ROOT, file_system_path,
*partitioned_path(thumbnail_name_for(thumbnail)))
  22.         end
  23.
  24.         # Used as the base path that #public_filename strips off
full_filename to create the public path
  25.         def base_path
  26.           @base_path ||= File.join(RAILS_ROOT, 'public')
  27.         end
  28.
  29.         # The attachment ID used in the full path of a file
  30.         def attachment_path_id
  31.           ((respond_to?(:parent_id) && parent_id) || id).to_i
  32.         end
  33.
  34.         # overrwrite this to do your own app-specific
partitioning.
  35.         # you can thank Jamis Buck for this:
http://www.37signals.com/svn/archives2/id_partitioning.php
  36.         def partitioned_path(*args)
  37.           ("%08d" % attachment_path_id).scan(/..../) + args
  38.         end
  39.
  40.         # Gets the public path to the file
  41.         # The optional thumbnail argument will output the
thumbnail's filename.
  42.         def public_filename(thumbnail = nil)
  43.           full_filename(thumbnail).gsub
%r(^#{Regexp.escape(base_path)}), ''
  44.         end
  45.
  46.         def filename=(value)
  47.           @old_filename = full_filename unless filename.nil? ||
@old_filename
  48.           write_attribute :filename, sanitize_filename(value)
  49.         end
  50.
  51.         # Creates a temp file from the currently saved file.
  52.         def create_temp_file
  53.           copy_to_temp_file full_filename
  54.         end
  55.
  56.         protected
  57.           # Destroys the file.  Called in the after_destroy
callback
  58.           def destroy_file
  59.             FileUtils.rm full_filename
  60.             # remove directory also if it is now empty
  61.             Dir.rmdir(File.dirname(full_filename)) if
(Dir.entries(File.dirname(full_filename))-['.','..']).empty?
  62.           rescue
  63.             logger.info "Exception destroying
#{full_filename.inspect}: [#{$!.class.name}] #{$1.to_s}"
  64.             logger.warn $!.backtrace.collect { |b| " > #{b}"
}.join("\n")
  65.           end
  66.
  67.           # Renames the given file before saving
  68.           def rename_file
  69.             return unless @old_filename && @old_filename !=
full_filename
  70.             if save_attachment? && File.exists?(@old_filename)
  71.               FileUtils.rm @old_filename
  72.             elsif File.exists?(@old_filename)
  73.               FileUtils.mv @old_filename, full_filename
  74.             end
  75.             @old_filename =  nil
  76.             true
  77.           end
  78.
  79.           # Saves the file to the file system
  80.           def save_to_storage
  81.             if save_attachment?
  82.               # TODO: This overwrites the file if it exists, maybe
have an allow_overwrite option?
  83.               FileUtils.mkdir_p(File.dirname(full_filename))
  84.               File.cp(temp_path, full_filename)
  85.               File.chmod(attachment_options[:chmod] || 0644,
full_filename)
  86.             end
  87.             @old_filename = nil
  88.             true
  89.           end
  90.
  91.           def current_data
  92.             File.file?(full_filename) ? File.read(full_filename) :
nil
  93.           end
  94.       end
  95.     end
  96.   end
  97. end

And my helper function for showing the pictures looks like this:
   1. def picture_for(employee, display_height = nil, img_size = :small)
   2.     if employee.picture
   3.       picture_image = employee.picture.public_filename(img_size)
   4.       link_to(image_tag(picture_image, :height => display_height),
employee.picture.public_filename)
   5.     else
   6.       image_tag("employee_portrait.gif", :height =>
display_height)
   7.     end
   8.   end


If you need more infos, write me please. I'll appreciate any help.
-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to