diff --git a/lib/sprig/source.rb b/lib/sprig/source.rb index 1ce8be2..65f9f4f 100644 --- a/lib/sprig/source.rb +++ b/lib/sprig/source.rb @@ -81,7 +81,7 @@ def filename def filepath path = seed_directory.join(filename) if File.symlink?(path) - File.readlink(path) + File.realpath(path) else path end diff --git a/spec/sprig_spec.rb b/spec/sprig_spec.rb index 1d2d82e..82e5795 100644 --- a/spec/sprig_spec.rb +++ b/spec/sprig_spec.rb @@ -71,12 +71,25 @@ end end - context "with a symlinked file" do + context "with a relative symlink" do let(:env) { Rails.env } around do |example| - `ln -s ./spec/fixtures/seeds/#{env}/posts.yml ./spec/fixtures/db/seeds/#{env}` + # Create shared directory + `mkdir ./spec/fixtures/db/seeds/shared` + + # Copy posts.yml to the shared directory + `cp ./spec/fixtures/seeds/#{env}/posts.yml ./spec/fixtures/db/seeds/shared/posts.yml` + + # Create relative symlink in environment directory to shared directory + `cd ./spec/fixtures/db/seeds/#{env} && ln -s ../shared/posts.yml posts.yml` + example.call + + # Remove shared directory + `rm -dr ./spec/fixtures/db/seeds/shared` + + # Remove posts.yml `rm ./spec/fixtures/db/seeds/#{env}/posts.yml` end