On Fri, Feb 17, 2012 at 22:13, Isak Andersson <icepa...@lavabit.com> wrote:
> Hi, sorry if I'm repeating is email or something, Cinnamon crashed as I was
> sending the mail and
> the result in the sent folder was completely empty, so I'm just gonna have
> to write it all over
> again, wee!
>
> Anyways, my question was about new camping and if we still have the ability
> to mount multiple smaller
> apps as the bigger app. I'm creating an app to host my blog and a bunch of
> other stuff using the new
> Camping version that comes with Mab + Riak. I want to be able to divide each
> part of the website into
> it's own app, but I still want them to share some things, like the public/
> folder so that they have the
> same look. I also want them to share Riak node which they will do.
>
> Let's say that my project structure looks something like this
>
> app/
>        app.rb
>        blog.rb
>        forum.rb        # Not actually having a forum though, probably
>        public/
>                Style.css
>                Coolpic.png
>        blog/
>                controllers.rb
>                views.rb
>        forum/
>                controllers.rb
>                views.rb
>        config/
>                ripple.yml
>                foo.yml
>
> First off, what is the correct command to mount these parts, and how does it
> work? The Camping site says:
> camping apps/**/*.rb.
>
> I'm not sure what it does though, and if it would still work in the new
> version.

In the newest (pre-release) version of Camping you solve this by using
a config.ru-file:

  # in config.ru
  require 'app'
  require 'blog'
  require 'forum'

  map '/' do
    run App
  end

  map '/blog' do
    run Blog
  end

  map '/forum' do
    run Forum
  end

You can then run `camping config.ru` to start the server.

> One thing that I would like, would be if all sub-apps for app.rb like blog
> or forum inherited some of the
> settings of app.rb. I'm using rack_csrf for csrf protection (obviously) and
> I find it kind of strange to have to set
> it up for each and every app instead of just app.rb.

The simplest solution is to define something like this:

  def App.setup(app)
    app.class_eval do
      set :foo, 123
      include Bar
      use Baz
    end
  end

And then:

  module App
    App.setup(self)
  end

  module Blog
    App.setup(self)
  end

  module Forum
    App.setup(self)
  end

>
> Another thing, how do I make app.rb the root of the entire site so it's
> mounted at foobar.com and not
> foobar.com/blog like the other ones should be mounted. Also, how do I link
> between the different apps?
> Like how do I make app link to the blog or a part of the forum link to a
> certain part of app?

Linking is indeed a hard problem. By default, Camping+Mab prepends the
mount path to all links. So if you generate "/user/1" inside a
Forum-template, the link will actually come out as "/forum/user/1". Of
course, this means that linking to "/blog/post/1" does actually link
to "/forum/blog/post/1" which probably wasn't what you intended.

I'm really not sure what's the best solution is here…

> I guess that was all the questions I had about this. I'm starting to feel
> like this would be the ultimate
> way to build a larger Camping app :)
>

Have fun :D
_______________________________________________
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list

Reply via email to