Two little code smells:
- Prefer use ```unless something``` instead of ```if !something```

```ruby
# bad
if !success
  puts "fail!"
end

# good
unless success
  puts "fail!"
end
```
- And if you only change to unless, that it will have another code smell: never use ```unless``` with ```else```. Rewrite these with the positive case first.

```ruby
# bad
unless success
  puts "failure"
else
  puts "success"
end

# good
if success
  puts "success"
else
  puts "failure"
end
```

My suggestion is chage this piece of code to: 
```ruby
if File.directopry?(f_abs)
  f_rel = File.join(dir, f)
  read_directories(f_rel) unless self.dest.sub(/\/$/, '') == f_abs
else
  if is_yaml(f_abs)
    pages << Page.new(self, self.source, dir, f)
  else
    static_files << StaticFile.new(self, self.source, dir, f)
  end
end
```

If you have some time, take a read at [GitHub Ruby Styleguide](https://github.com/styleguide/ruby)  and [bbatsov/ruby-style-guide](https://github.com/bbatsov/ruby-style-guide)