File_column Dynamic directory

I asked this question earlier and did recieve an answer but I am not
sure Ifully understood the answer as I am getting all sorts of
errors when trying to implement.

Basically I want to add a layer to the path for my files. I have the
following set up in my model class:

file_column :image,
:store_dir => :dynamic_dir

def dynamic_dir
File.join(field_options[:root_path], “picture”,@user.username,
“image”)
end

When I run the app I recieve the following error:

undefined method `to_str’ for :dynamic_dir:Symbol

This is the code that Kyle sent me in reply to my original question:

class Model #…
file_column :field, :store_dir = > :dynamic_dir

def dynamic_dir
File.join(field_options[:root_path], “model_name”,
Digest::SHA1.hexdigest(User.current_user.hash)[0…9], “field_name”)
#…

I also tried it with replacing my variable (user.companyname) with
“test” and that does not work either. I have the trunk version of
file_column running on my machine.

Thanks for the help

Andrew

On 1/9/06, Andrew F. [email protected] wrote:

def dynamic_dir
class Model #…

Thanks for the help

Andrew


Rails mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails

Can you paste the full error trace?


Kyle M.
Chief Technologist
E Factor Media // FN Interactive
[email protected]
1-866-263-3261

Kyle,
here is the full trace:

/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/1.8/fileutils.rb:841:in fu_list' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/1.8/fileutils.rb:841:inmap’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/1.8/fileutils.rb:841:in fu_list' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/1.8/fileutils.rb:173:inmkpath’
#{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:25:in
init_options' #{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:549:infile_column’
#{RAILS_ROOT}/app/models/episode.rb:4
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:207:in load' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/ active_support/dependencies.rb:207:inload’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:39:in require_or_load' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/ active_support/dependencies.rb:22:independ_on’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:30:in associate_with' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/ active_support/dependencies.rb:179:inrequire_association’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:179:in require_association' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/associations.rb:780:inrequire_association_class’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/associations.rb:355:in has_many_without_reflection' (eval):5:inhas_many’
#{RAILS_ROOT}/app/models/podcast.rb:3
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:207:in load' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/ active_support/dependencies.rb:207:inload’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:39:in require_or_load' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/ active_support/dependencies.rb:22:independ_on’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:30:in associate_with' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/ active_support/dependencies.rb:179:inrequire_association’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:179:in require_association' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/associations.rb:780:inrequire_association_class’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/associations.rb:355:in has_many_without_reflection' (eval):5:inhas_many’
#{RAILS_ROOT}/app/models/user.rb:6
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:207:in load' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/ active_support/dependencies.rb:207:inload’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:39:in require_or_load' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/ active_support/dependencies.rb:22:independ_on’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:178:in require_dependency' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/ active_support/dependencies.rb:178:inrequire_dependency’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
active_support/dependencies.rb:194:in const_missing' #{RAILS_ROOT}/lib/account_system.rb:82:inapp_config’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/filters.rb:354:in send' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/filters.rb:354:incall_filters’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/filters.rb:350:in each' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/filters.rb:350:incall_filters’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/filters.rb:339:in before_action' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/filters.rb:331:inperform_action_without_benchmark’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/benchmarking.rb:69:in perform_action_without_rescue' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/benchmarking.rb:69:inmeasure’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/benchmarking.rb:69:in perform_action_without_rescue' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/rescue.rb:82:inperform_action’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/base.rb:369:in send' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/base.rb:369:inprocess_without_session_management_support’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/session_management.rb:116:in process' #{RAILS_ROOT}/app/controllers/application.rb:15:inprocess’
#{RAILS_ROOT}/app/controllers/application.rb:14:in catch' #{RAILS_ROOT}/app/controllers/application.rb:14:inprocess’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/dispatcher.rb:
38:in dispatch' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/ fcgi_handler.rb:141:inprocess_request’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/
fcgi_handler.rb:53:in process!' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/ fcgi_handler.rb:52:ineach_cgi’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/fcgi-0.8.6.1/./fcgi.rb:597:in
each' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/fcgi-0.8.6.1/./fcgi.rb:597:ineach_cgi’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/
fcgi_handler.rb:52:in process!' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/ fcgi_handler.rb:22:inprocess!’
/Users/flip/Documents/workspace/SolidPodcast/public/dispatch.fcgi:24

This error occured while loading the following files:
user.rb
podcast.rb
episode.rb

On 1/9/06, Andrew F. [email protected] wrote:

Resources/ports/lib/ruby/1.8/fileutils.rb:841:in fu_list' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ active_support/dependencies.rb:30:in associate_with’
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
active_support/dependencies.rb:22:in depend_on' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ action_controller/filters.rb:350:in call_filters’
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/dispatcher.rb:
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
fcgi_handler.rb:22:in `process!’
On Jan 9, 2006, at 1:31 PM, Kyle M. wrote:

                   :store_dir => :dynamic_dir

This is the code that Kyle sent me in reply to my original question:
“test” and that does not work either. I have the trunk version of

Rails mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails


Rails mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails

It doesn’t look like you are using the most current version of the
trunk. Can you update and verify that you are using version >= 53?


Kyle M.
Chief Technologist
E Factor Media // FN Interactive
[email protected]
1-866-263-3261

That sort of worked. I now receive the following error:

undefined local variable or method `field_options’ for #<Episode:
0x24b8af4>

I completely removed my old file_column instance and than installed
new. I am on revision 3 now. I also tried just options. Sorry if this
is something that I am doing wrong still slowly wrapping my brain
around rails.

here is the full trace as well:

/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/base.rb:1501:in method_missing' #{RAILS_ROOT}/app/models/episode.rb:10:indynamic_dir’
#{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:116:in
send' #{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:116:instore_dir’
#{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:128:in
tmp_base_dir' #{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:215:instore_upload’
#{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:150:in
upload' #{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:70:inassign’
#{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:656:in
audio=' #{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:655:inaudio=’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/base.rb:1337:in send' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/base.rb:1337:inattributes=’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/base.rb:1336:in each' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/base.rb:1336:inattributes=’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/base.rb:1188:in initialize_without_callbacks' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/callbacks.rb:236:ininitialize’
#{RAILS_ROOT}/app/controllers/episodes_controller.rb:36:in new' #{RAILS_ROOT}/app/controllers/episodes_controller.rb:36:increate’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/base.rb:853:in send' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/base.rb:853:inperform_action_without_filters’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/filters.rb:332:in perform_action_without_benchmark' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/benchmarking.rb:69:inperform_action_without_rescue’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/benchmarking.rb:69:in measure' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/benchmarking.rb:69:inperform_action_without_rescue’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/rescue.rb:82:in perform_action' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/base.rb:369:insend’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/base.rb:369:in
process_without_session_management_support' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/session_management.rb:116:inprocess’
#{RAILS_ROOT}/app/controllers/application.rb:15:in process' #{RAILS_ROOT}/app/controllers/application.rb:14:incatch’
#{RAILS_ROOT}/app/controllers/application.rb:14:in process' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/dispatcher.rb: 38:indispatch’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/
fcgi_handler.rb:141:in process_request' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/ fcgi_handler.rb:53:inprocess!’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/
fcgi_handler.rb:52:in each_cgi' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/fcgi-0.8.6.1/./fcgi.rb:597:ineach’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/fcgi-0.8.6.1/./fcgi.rb:597:in
each_cgi' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/ fcgi_handler.rb:52:inprocess!’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/
fcgi_handler.rb:22:in `process!’
/Users/flip/Documents/workspace/SolidPodcast/public/dispatch.fcgi:24

Andrew

Thanks, wasn’t sure if it was me or file_column. I will work on
figuring out what is going on with my dynamic_dir method now.

Andrew

On 1/9/06, Andrew F. [email protected] wrote:

#{RAILS_ROOT}/vendor/plugins/file_column/lib/file_column.rb:128:in
audio=' Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ action_controller/base.rb:369:in send’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
fcgi_handler.rb:52:in `each_cgi’
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/

Kyle,
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
active_record/associations.rb:355:in has_many_without_reflection' active_support/dependencies.rb:39:in require_or_load’
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
Resources/ports/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
#{RAILS_ROOT}/app/controllers/application.rb:14:in `process’
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/

the

def dynamic_dir
Andrew
Kyle M.
Rails mailing list
E Factor Media // FN Interactive
http://lists.rubyonrails.org/mailman/listinfo/rails

File_column is responding correctly, but there’s a bug within your
dynamic_dir method. For debugging help, I recommend the IRC channel.


Kyle M.
Chief Technologist
E Factor Media // FN Interactive
[email protected]
1-866-263-3261

Figured I would post this as a workaround and if I have time I will
go through the file_column code a bit more to try and patch it. But I
found the solution to my dynamic directory issue. It is definitely a
file_column thing.

After getting my dynamic_dir method to work I was running into the
following error: (Removed the info about the railsroot directory but
the full path was there)

No such file or directory - /{RAILS_ROOT}/public/episode/1/audio/tmp/
1136928177.355831.270

This error came from the following method:

def dynamic_dir
File.join(“episode”,self.user_id,“audio”)
end

The call to file_column looks like this:

file_column :audio,
:permission => 0664,
:store_dir => :dynamic_dir

and here is the full app error trace for those that care:

/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/1.8/fileutils.rb:525:in stat' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/1.8/fileutils.rb:525:instat’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/1.8/fileutils.rb:511:in preserve' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/1.8/fileutils.rb:455:incopy_entry’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/1.8/fileutils.rb:416:in copy_entry' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/1.8/fileutils.rb:584:inmv’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/1.8/fileutils.rb:572:in fu_each_src_dest' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/1.8/fileutils.rb:845:infu_each_src_dest0’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/1.8/fileutils.rb:845:in fu_each_src_dest' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/1.8/fileutils.rb:572:inmv’
#{RAILS_ROOT}/vendor/plugins/trunk/lib/file_column.rb:365:in move_from' #{RAILS_ROOT}/vendor/plugins/trunk/lib/file_column.rb:314:inafter_save’
#{RAILS_ROOT}/vendor/plugins/trunk/lib/file_column.rb:676:in
audio_after_save' #{RAILS_ROOT}/vendor/plugins/trunk/lib/file_column.rb:675:inaudio_after_save’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/callbacks.rb:333:in send' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/callbacks.rb:333:incallback’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/callbacks.rb:330:in each' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/callbacks.rb:330:incallback’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/callbacks.rb:250:in create_or_update' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/base.rb:1226:insave_without_validation’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/validations.rb:698:in save_without_transactions' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/transactions.rb:126:insave’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/transactions.rb:126:in transaction' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/transactions.rb:91:intransaction’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/
active_record/transactions.rb:118:in transaction' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/ active_record/transactions.rb:126:insave’
#{RAILS_ROOT}/app/controllers/episodes_controller.rb:39:in create' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/base.rb:853:insend’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/base.rb:853:in perform_action_without_filters' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/filters.rb:332:inperform_action_without_benchmark’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/benchmarking.rb:69:in perform_action_without_rescue' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/benchmarking.rb:69:inmeasure’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/benchmarking.rb:69:in perform_action_without_rescue' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/rescue.rb:82:inperform_action’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/base.rb:369:in send' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/ action_controller/base.rb:369:inprocess_without_session_management_support’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/
action_controller/session_management.rb:116:in process' #{RAILS_ROOT}/app/controllers/application.rb:15:inprocess’
#{RAILS_ROOT}/app/controllers/application.rb:14:in catch' #{RAILS_ROOT}/app/controllers/application.rb:14:inprocess’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/dispatcher.rb:
38:in dispatch' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/ fcgi_handler.rb:141:inprocess_request’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/
fcgi_handler.rb:53:in process!' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/ fcgi_handler.rb:52:ineach_cgi’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/fcgi-0.8.6.1/./fcgi.rb:597:in
each' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/fcgi-0.8.6.1/./fcgi.rb:597:ineach_cgi’
/Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/
Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/
fcgi_handler.rb:52:in process!' /Applications/Locomotive/Bundles/rails-1.0.0-max.bundle/Contents/ Resources/ports/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/ fcgi_handler.rb:22:inprocess!’
/Users/flip/Documents/workspace/SolidPodcast/public/dispatch.fcgi:24

Now on to the workaround. I figured that there was something going on
with the temp_dir settings and decided to test it out by defining the
temp directory myself. The new file_column call looks like this:

file_column :audio,
:permission => 0664,
:store_dir => :dynamic_dir,
:tmp_base_dir => “/episode/tmp”

The permission really doesnt matter. What does is the tmp_base_dir.
As the stack shows something is going on when creating the temp
directory as file_column blows up when trying to implement the
after_save_method found at line 675 of the trunk version. It blows up
because the temp directory is never created, since it is never
created the file is never saved and therefore can’t be moved to the
permanent directory.

By over riding the tmp directory settings I am able to upload files
that are stored where i want them to be stored with the added layer
of by user.

Like I said I will try to carve some time out to look into this more
and come up with a patch to submit for file_column but until than or
if someone else figures out why this acts the way it does and you
need to have a dynamic directory than this is the workaround to the
issue.

Thanks for all the lists help again I know that I have had several
questions with some great responses on this list. I wish all
communities were this helpful.

Andrew