On Fri, Feb 17, 2012 at 22:13, Isak Andersson <[email protected]> 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
[email protected]
http://rubyforge.org/mailman/listinfo/camping-list