andymeneely / squib

A Ruby DSL for prototyping card games.
http://squib.rocks
MIT License
917 stars 67 forks source link

`embed.svg` doesn't respect `img_dir` #323

Open vtbassmatt opened 3 years ago

vtbassmatt commented 3 years ago

Using the "advanced" project layout, I have images in an img/ directory. This works great for svg but not for embed.svg. For a call like this:

  text(str: data.body, layout: :body, wrap: :word_char, markup: true) do |embed|
    embed.svg key: ':power:', file: 'battery-pack.svg'
  end

I get:

% rake with_proofs deck
Enabling proofing lines.
Loading SVG(s) <===========================================> 100% Time: 00:00:00
Loading SVG(s) <===========================================> 100% Time: 00:00:00
Loading SVG(s) <===========================================> 100% Time: 00:00:00
rake aborted!
File /Users/<username>/Projects/<projectdir>/battery-pack.svg does not exist!
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/args/input_file.rb:30:in `validate_file'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/args/arg_loader.rb:87:in `block (2 levels) in validate'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/args/arg_loader.rb:87:in `map'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/args/arg_loader.rb:87:in `with_index'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/args/arg_loader.rb:87:in `block in validate'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/args/arg_loader.rb:81:in `each'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/args/arg_loader.rb:81:in `validate'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/args/arg_loader.rb:19:in `load!'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/api/text_embed.rb:34:in `svg'
src/deck.rb:57:in `block (2 levels) in <top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/api/text.rb:18:in `text'
src/deck.rb:56:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/deck.rb:74:in `instance_eval'
/usr/local/lib/ruby/gems/2.7.0/gems/squib-0.15.3/lib/squib/deck.rb:74:in `initialize'
src/deck.rb:29:in `new'
src/deck.rb:29:in `<top (required)>'
/Users/<username>/Projects/<projectdir>/Rakefile:15:in `load'
/Users/<username>/Projects/<projectdir>/Rakefile:15:in `block in <top (required)>'
Tasks: TOP => deck

This is ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19].

Including the img/ before the filename, it renders correctly.

andymeneely commented 3 years ago

Interesting - I'll take a look.