This seems a bit circuitous. Generally `subject` is used when you want to use the short `it` or `its` form (not always). I'm not sure it's that that I find odd though, I think it's combining the `@hostname` with the memoized `let(:hostname)` that throws me.

RSpec does have a form for dealing with this kind of thing. Note that `it` refers to `subject`, which means it's not always necessary to name `subject`, though it's often desirable for clarity even if you don't subsequently refer to the variable it creates:

```ruby
describe '#aka_hostname' do
    subject { host.aka_hostname }

    context "no www" do
      let(:host) { build(:host, hostname: 'foo.com') }
      it { should eql('aka-foo.com') }
    end

    context "www on front" do
      let(:host) { build(:host, hostname: 'www.foo.com') }
      it { should eql('aka.foo.com') }
    end
  end
end
```

There's also nothing wrong with the (perhaps less intention-revealing, but certainly terse)

```ruby
describe '#aka_hostname' do
  it "should add aka- on the front if no www" do
    host = build(:host, hostname: 'foo.com')
    host.aka_hostname.should eql('aka-foo.com')
  end

  it "should replace www. with aka. " do
    host = build(:host, hostname: 'www.foo.com')
    host.aka_hostname.should eql('aka.foo.com')
  end
end
```