ruby on rails vs codeigniter - ruby-on-rails

between ruby on rails and codeigniter, which framework is better (and why) for a website with
user management
profile pages
subscriptions
blog
upload/download

Both of the frameworks you mention could handle a web site with those requirements.
You should also add Django and Symfony to your list of possible choices as they too would suit your needs.
Do you have any experience in building applications with Ruby/PHP/Python?

That depends on which language you favour. Pretty much any web framework could do all of those things. I'd personally favour Codeigniter, as PHP is more widely supported on hosting platforms.

Technically, I also think both platforms are equally capable of doing the things you want. In such cases, other things become important, such as the size of the community and hosting options. In that case, PHP and CI would be a clear winner over RoR.

Related

Any reason why Ruby on Rails doesn't have a standard user authenticated system built in?

This question aims to understand RoR and frameworks in general. It looks like RoR never had any standard user authentication system. Was it just historical reason (just happened naturally as it did)... or could it be intentional? Because RoR is a website building tool, more often than not, user authentication is a crucial part of a website.
To put it into perspective, another question is, do other popular frameworks, Django, Symfony, CakePHP, have user authentication built in?
There is no reasonably generic way to do user authentication. Most frameworks leave it up to you to choose the plugin that most closely matches what you're trying to accomplish.
For example, consider these two situations:
a blog which has a single administrator with password-protected admin-facing tools
a site like YouTube which allows users to sign up and administer their own content
Both of these sites would require vastly different authentication systems; which of these systems should Rails cater to out-of-the-box?
The Rails core team wanted to ensure that Rails was open-ended enough to make anything you want. There is no one-size-fits-all authentication scheme, so the core team decided to leave it out. Rails is easily extendable via gems and plugins, so that is where they belong.
Some examples are Warden and the Rails Warden plugin, Devise, Authlogic, and Restful Authentication.
CakePHP has a built in Authentication component that is pretty straight forward and easy to implement.
Most of these frameworks you mentioned are toolkits, not complete products. You build these things yourself, or leverage plugins from the community. Django's admin plugin/module has authentication out of the box though. Drupal does too, as a matter of fact.
Authentication can be(and is in my opinion) a matter of taste and need. If Rails was including things like that, it would start to become a website and not a framework. The programmer has to be free to choose among various implementations. That is why gems are available.
I've been programming a little in Rails and CakePHP, and I can say that Rails doesn't need to provide a mechanism like this. The community is very very good, and there are many examples (already said, like Devise, Authlogic...) made by very good programmers. Of course, there are many tutorials online (and also, railscasts, which are simply awesome) to program a succesful set-up for your project. So, if we have all of this, why should we need something like cakePHP mechanism? It's OK, it works, but there's just a very good tutorial and that's all( and maybe enough..). So, in the end, if u have a nice community you shouldn't care about the core of the technology, there will be always someone else more experienced with your needs that will do it for you. And if you don't find it, do it by yourself and in the proccess you will find a lot of help! :)

wordpress and Ruby on rails

I am new to both Wordpress and Ruby on rails.Are these (WP and ruby on rails) two are power full tool for creating any good website .
I have seen from wordpress and ruby on rails official website that some of the popular web sites(twitter,WSJ etc.) are using these two.
Please give me are brief idea these.
It really depends on what you want, what you have and how you want it. Wordpress is 'supposed' to be a blogging CMS, but its so flexible, you can even use it for web apps. (Of course you will need to write your plugins in php). If you're looking to just have a simple website and you're not too technically inclined, I'd say Wordpress is the Go-to platform. If you have some time on your hands, seriously considering web apps, Rails is a pretty advanced web-app framework which is definitely worth a go. So really, it depends.
Well using both seems rather impractical. They both are geared toward a different use case. Rails is for web apps whereas WP is better for normal web sites.

How do I have plugin architecture in Ruby on Rails?

I have to built a social networking site on Ruby on Rails. The features in the site may change from time to time; so we will need to add/remove features with ease. Moreover, we may be building another social networking site. Due to these reasons, we are thinking to build a basic framework for social networking sites in RoR with the feature to install or uninstall extensions to the framework.
I worked previously in Joomla! CMS and its architecture for adding/removing extensions is kind of what I am looking at. In a Joomla! installation there is usually an admin side from which you can add/remove/customize extensions.
I am new to RoR and finding it little difficult to decide how to do this. Any help will be appreciated.
UPDATE 2015: this was answered in 2009 a lot has changed
Plug-ins have been superseded by Gems and Engines
For all the information you need on Engines:
http://guides.rubyonrails.org/engines.html
Engines are a fantastic way of building encapsulated and reusable code for your rails apps.
Original Answer for Reference
On the development side Rails Engines and/or plugins is probably what you are looking for.
Rails Engines are small subsets of an
application that can be dropped into
any of your Rails applications and
handle common parts of the application
from scratch.
Say for example your social networking application has a wiki, blog, chatroom etc. You would more than likely want to create a wiki engine, blog engine and chatroom engine.
Engines allows you to re-use such functionality within different applications so you do not have to repeat yourself.
Take a look at: http://rails-engines.org/
Some support for ‘engine’ plugins has
been merged into the Rails core
codebase in Rails 2.3.
I would also recommend taking a look at some public projects say on github and see how people have used engines.
Take a look at some engines:
Wiki-Engine
Skinny-Blog-Engine
Other useful links for reading
Tips for writing Engines
Rails Engines, Railscast by Ryan Bates
The Russian Doll Pattern (PDF)
In functionality terms you could still have an admin area that could activate certain features ie. your blog or wiki by allowing users access to such areas with a permissions/roles system.
ACL9
role_requirement
restful-authentication
If you want to build a CMS which supports some kind of extensions like in Wordpress or Joomla then you will have to either build it and provide guidlines or at least look into how you would upload/install Engines/Plugins from a user perspective.
Not sure on the security implications of this
Redmine has put this kind of functionality into their awesome application. You may want to dig around the source code for tips and clues
Finally Adva_CMS has basically adopted this approach and have created a number of Engines for their CMS application
HTH
Engines are still a pretty solid way to go, the new location to get info on those is located here: http://guides.rubyonrails.org/engines.html
But what you need is really more application specific. A lot of applications develop these things organically over time. They start out by hand crafting a few of these and then they re-factor them periodically until they find patterns that align with software design patterns and then they develop a plugin framework.
Are you going to expose your interface to end users? To third party developers? What parts of the application are controlled by these plugins? Is it just the presentation tier? Does it affect the data model? Consider the fact that when you publish any kind of external interface, you're developing contracts that you need to honor.
You might check out these design patterns: http://en.wikipedia.org/wiki/Software_design_pattern. They will help you figure out how to manage your development process. If you're just working on plugins for internal use, then what's the real purpose of them? What makes them different than modules?

Recommendation on development framework for a browser based online product catalogue?

I have to develop a online product catalog which will eventually developed into a simple online ordering system, I have never developed a web application before. Please recommend an application framework which might be a good choice for this kind of apps.
Is Ruby on Rails a good choice?
Thanks.
Definitely Ruby on Rails a Good Canditate for developing online e-commerce application , There are many e-commerce application developed in Ruby on Rails , which are successfully running .
Open source e-commerce application spree
Shopify CMS for online store .
Agile web development book has explained the working of rails with an example how to develop a product catalog , which will be more helpful for you.
Many plugins and gems available for payment gateway like the Payment gem .
What more you could need to develop an online store .If your resources are less and the development time should be speedy then rails a good candidate for your requirement.
Finally its your interest and skills set and choose the platform which suits your requirement :)
Hope this helps !
Rails is as a good choice as any other web framework can be.
Here are a few links to help you getting started with it.
The Guides
The Screencasts
The Agile Web Development with Rails book
And for your online ordering feature, you could look at Active Merchant.
Is it necessary to develop it yourself?
There are a number of great drop in solutions for a catalog/shop application. Some offer both the source code for customized deployment, others offer a package including hosting, setup and maintenance. In addition to what's already been mentioned, here are a few more e-commerce solutions that are ready to do.
Keep your hosting solution in mind when deciding how to proceed. A lot more hosts offer PHP than rails.
PHP Based ZenCart (Both)
Django Based Satchmo (Source only)
Rails Shopify (Hosted only)
Do you really want to reinvent the wheel?
If you've never written a web application before do NOT start with something that involves billing. That's a good way to end up in a lot of trouble. Billing is hard to get right, and if you get it wrong you can end up facing huge fines or even in court. In most cases, you have to comply with PCI DSS security standards, and if you fail to do so and information is lost or stolen, you're likely looking at $500,000 in fines.
If you absolutely must do e-commerce, outsource it to PayPal or Google Checkout so that your risk is limited mainly to charging people the wrong amount by accident.
That warning out of the way, Rails is a good place to start if you've never done web development before. It has it's problems, but they'll go unnoticed until you've been working with it for at least two or three years. i.e., they're fairly minor, and are likely to annoy only a very experienced developer with significant project requirements.
Full disclosure: Google is my employer, so obviously I think you should opt for the Google Checkout option.

Rails for ecommerce site

I was planning on using RoR for an upcoming e-commerce site but keep reading
comments that give the impression that this framework is not yet fit for this type of a commercial application.
What is the state of it? May it be used for large scale online stores etc?
Is compatibility and the frequently changing framework an issue to worry about?
Late answer... but I feel I should share some of the latest stuff available.
Is compatibility and the frequently
changing framework an issue to worry
about?
No. But it sounds like you are a beginner with Rails -- anyone starting a big e-commerce project should consider sticking with a framework they are already comfortable with.
If you definitely want a Rails app and your site is primarily an e-commerce shopping site, I recommend you look at Spree (http://spreecommerce.com/).
If your site is primarily a web application with a small purchasing component, consider using ActiveMerchant directly to hack together your own simple shopping page.
If you are making a primarily e-commerce shopping site, you would do well to at least consider non-Rails solutions. There are so many options for standalone web stores, shopping carts linked to CMS apps like WordPress and Drupal, third-party services for a fee (e.g., Shopify for shops, Chargify for subscription services) and many of them can be customized with minimal coding.
Rails is up to the task, but if you aren't already a "Rails guy" there's no particular reason to choose it for a new e-commerce app.
yes, rails can do it quite well. check out active merchant site, as well as shopify, which is a rails site specifically for ecommerce. as far as changes to the framework, i've found them pretty easy to keep up with on our applications.
Agree with other's posts about activemerchant. That combined with someone like Braintree as the gateway (who are programmer oriented) make it pretty simple to do.
It depends on what features you want in your system.
Chris mentioned some tools for payment processing and order / cart management.
If you want something for a 'large scale online store' then I'm not sure there is anything yet. Specifically when I worked with ATG Dynamo Commerce Server, there was a massive amount of effort invested in their pricing, discount and promotion elements.
Very late to answer but try out http://www.ror-e.com
https://github.com/drhenner/ror_ecommerce
Disclaimer: I wrote it, but it is more developer friendly and starts you off with a lot of best practices baked in. Good luck

Resources