i have the book Agile development, and the PickAxe book. I am just
getting started with both ruby, and a demo project on rails from the
tutorial. I have a monstrosity of a site that i have designed for work.
I started the project a year ago, while i was learning php. The site
started as a simple way to get info to ag buisnessmen about current
status of their machines. Now, however, we have added new features, and
different functionality that makes the site very different from how it
started out. Firstly, its a mess. Everything was built in pieces that
do not really work together well. I want to do a complete rewrite. I
would love to do it in rails..
but... i have a couple of questions that concern me about it.
I like how so much stuff is automated in Rails. But the content of our
site now depends on a lot of conditionals.
if condition exist, do this formula and display results in this table
cell, if not do that formula, unless something else, then to do
something else. etc....
Is this kind of thing as easy to pull off in rails as it is in php? (
not that its really easy in php )
another question... after a huge site is built, if something new comes
along that we need to support, It will require more tables or more
cells. Will this mess anything up?
Lastly, one of the ways i am trying to sell this to my boss is by the
ease of use with ajax. I want to learn this to enhance our user
experience. We want this site to be world class, and after showing off
some sites to my employer, he was pretty excited about some of the
widgets for our site. Does rails really make it easier to do this ?
I am going to be learning rails eventually anyway for my own pet
projects. But if any of you have some feedback here on my concerns or
to quell my nervousness about this, I would really appreciate it a lot.
If you have read this far, i thank you for your time.
no no, not programming the inside the database. I mean display of
different content inside table cells based on certain conditions.
Updating table rows based on conditions, etc..
What I've found is that almost everything is easier in Rails than PHP.
The fact that it separates everything out into views and controllers
makes putting the login into your pages so much easier. For instance, if
you want to display different views based on a condition:
def report
if [a condition]
render :action => 'template1'
else
render :action => 'template2'
end
end
You can also call partials from within your view if that is necessary to
display just a small piece of a page.
I'm currently on a project where I use ajax to update small sections of
a page every 10 seconds or so. You don't have to use any javascript to
implement ajax functionality in rails apps.
Also, I know what you mean about PHP apps growing out of control. You
will not have that problem with rails as it's so much better organized.
Well Jason,
i think you have provided sufficient ammo to go after this project as
a rails rewrite.
I have one last thing.
this website is for three different companies. three different domains
point to three different sites on our virtual host. I want to combine
all three into one web folder. That way, if I update something, I only
have to do it once. Now, I could have all three sites point to to the
same folder from the apache config, however, each site needs different
logos. There are also some minor differences on which info is displayed
( that i could work around ) but in order to share code, i need to have
a variable that tells me which domain was accessed to get there.
I know that this can be done. Do you have a good reccomendation about
how to do that ? I think mongrel may help me out. Don't know for sure.
thanks for your help on this, by the way. Whether i can use all the
same code for all three sites or not, i certainly am wanting to do it
in rails.
One minor lookout, Shawn – be sure you have given yourself a sufficiently long “runway” to learning + building your first RoR site(s). I found it very tough to get to the point where I could simply code some stuff “from my head” rather than looking up how to do literally everything. There is so much magic in Rails, but you really need to understand the magic before you can build sites beyond the 15-minute demo sites in the books and screencasts. Like you I set out to build a complicated site as my first project – quite a journey!
yeah, each thing i learn has a huge learning curve. I like this kinda
stuff a lot, but it all comes with a price. We have a test domain where
we set everything up for fake till it works, then point the server at
it. I mainly wanted to know that all this is possible and worth the
move to rails, which i am thinking more and more that it is.
thanks for your time here, by the way. I wouldn’t mind hearing about
your journey though. Did you blog it somewhere ? Might save me some
pain.
no blog postings - I don’t get to do Rails as my day job (yet) so it’s been night work over the past 6 months, I actually restarted the site 2x as I learned new things and as Rails developed (for instance, the recent rise of RJS + REST). But I’m actually getting the hang of it a bit now, it’s exciting!
The tough part for me is that the edge rails stuff is very cool, but not nearly as well-documented as 1.1, and unfortunately for me my personality draws me towards the edge far too often. So it’s a struggle to find good documentation + examples.
I’ve bought books (Pickaxe, AWDwR 1 + 2, Ruby for Rails, Cody Fauser’s RJS ebook, Rails Recipes) and even a screencast ($9 RJS screencast @ www.peepcode.com - Geoff is coming out with a REST screencast, too, soon, I hear.) Actually a blog posting might be theraputic for me
Well Jason,
i think you have provided sufficient ammo to go after this project as
a rails rewrite.
I have one last thing.
this website is for three different companies. three different domains
point to three different sites on our virtual host. I want to combine
all three into one web folder. That way, if I update something, I only
have to do it once. Now, I could have all three sites point to to the
same folder from the apache config, however, each site needs different
logos. There are also some minor differences on which info is displayed
( that i could work around ) but in order to share code, i need to have
a variable that tells me which domain was accessed to get there.
I know that this can be done. Do you have a good reccomendation about
how to do that ? I think mongrel may help me out. Don’t know for sure.
When you get to this part, where you need to seperate out the functionality, perhaps you can use a different layout for each, or just store a logo image in the company information. before_filters can be used to set things at the start of the request so that the logic is set for the rest
Well thanks, I had not really thought of a company info table before, but it would make a lot of sense. The trick i don’t know how to pull off is how to have code shared between sites, while at the same time have
domain1.com pull a different display in logos, etc. while domain2.com will pull something different. Still keeping all of the logic in place.
This will help you to identify the domain that your using. In fact I’m not sure that you need this to determine your domain but it does make it nice.
You can include this in the application_controller as a before filter so that everytime someone accesses an action, it the domain is identified an put into a method/varaible so that you can use it easily anywhere in the controller / view of the action.
I believe you can also set a different layout in a before_filter so that depending on the domain, you can apply a different layout. (I’m not completely sure on this but I think so)
so you might do something like
class ApplicationController < ActionController
before_filter :set_domain_variable
def set_domain_variable
# logic in here to set the domain
self.class.layout = “some_domain_layout”
end
end
the layout method is a class method of the controller.