What Rails plugins would you like to see? - ruby-on-rails

What behavior have you had to implement in your Rails applications that you feel could exist nicely as a plugin?
What plugin functionality have you searched for in the past but couldn't find?
What existing Rails plugins could be improved or extended, and how?

I'd like to see an engines plugin that dropped in an admin interface that provided a dashboard summary of all the models in the app, with configurable activity charts.

I once wrote a component for an application that did uploaded a zip of photos to an application so they didn't have to be done one by one, I think I may make that into a plugin when I have time, well a new version of it, the code's a little ugly.

Not easy to answer. Everyone is biased towards his own current projects. Additionally a lot of great plugins already exists.
Personally I would like to see some menu plugin for a typical data base application. E.g. where there are few user roles, and every user role has different rights. And a main menu with sub menu which depends on user's rights to actions.
A (CSS) menu is reimplemented in almost every data base application. It is rather given application specific thing and I don't know how hard it would be to implement some general solution or template.

A Credit Card Payment System
Right now, no one bothers implementing credit card payments until a site has become "production quality". Single-person projects or small startups don't bother making this at first b/c they would much rather spend their time prototyping new, hard, or interesting features.
This is bad in the long-run for everyone, including end-users, b/c the default is to offer (often innovative and really great) services for free, which means only already-funded teams or people with lots of extra time can even get to the point of making something.
If this existed, were packaged up neatly, and were as dead-simple as Rails scaffolding, small projects could default to whatever payment scheme that actually made sense -- like pay-per-use, donations, trial periods, first 5 free, etc. -- making it possible to fund the really great products out there, instead of forcing them to rely on outside funding or ads, which ruins the product.
In a real physical store, people expect to pay. If the person on the other side of the counter gives me something for free (w/o buying anything at all), I say "Are you serious??" and walk away bewildered. But online, I almost expect it. This is bad! Because now everyone expects it, and people trying to make great things can't focus on actually doing that b/c they are too busy trying to figure out how to make it great and free.
Oftentimes, there are free things out there online that I like so much that I would like to pay for, but there's simply no easy way to do it. And I'm not alone. I use tipjoy and have donated to things that have a PayPal donation setup like Auditorium, but I don't see these as adequate.
The best thing out there that I've seen is RailsKits. But as far as I understand, they aren't packaged properly so that I can add them to my site whenever I please like a plugin or gem.

I'd like to see some sort of in-built video playback/streaming. I need it for my current project.

I agree with Greg... there are lots of great plugins, and lots of great ideas for more.
I think there's always a need for more web APIs to be supported. As we go forward with API driven services and semantic web, there's tons of work to be done on that front.
http://www.programmableweb.com/ is a great starting point for thinking about what really useful APIs don't have a rails plugin or ruby gem yet.
Cheers!
Walt

Related

Is there a rails gem like ActiveAdmin for building an entire data-driven site?

I recently used ActiveAdmin for the first time to toss together a very quick admin panel for a friend's site and was incredibly impressed with how incredibly fast and simple it was to set up, and how nice it looked right out if the box.
I always find little projects that could benefit with a central website to coordinate information, and I was wondering if anyone knew of a similar gem for snapping together an entire website in this same super-simple, fast and nice-looking way. Something generic that would work particularly well for websites that have structured content/data, but no real "business logic" (for example, something that could be used to organize/display/update information & event schedules for a neighborhood voulteer group, PTA bake sale, bar trivia night, etc)?
I know I could just scaffold out everything and have it be purely functional in five minutes, but that isn't the kind of thing you can expect a PTA bake sale mom & friends to use, and I don't really have the time to devote to this kind of thing, I'm just doing it to be helpful.
I'm particularly interested in something that can be casually thrown together in an hour or two without a great deal of effort (a la ActiveAdmin) and pushed up to heroku, but has enough clean, pre-canned styling and interactivity to look clean and nice right out of the box (javascripty drop down menus, reasonable page content presentation, etc).
I know there are non-rails answers for this, but I'm particularly interested in rails (or even just ruby), so I can add bits and pieces from time to time.
I did some google searching, but unfortunately I'm not sure what to even search for, which leads to question 2: are there any curated repositories of gems of this kind where I can browse first before asking on a site like this and taking up people's time?
In both cases, thank you very much for the help and education!
I'm a big fan of Typus: http://rubygems.org/gems/typus.
It's more flexible than ActiveAdmin. The out-of-the-box configuration is not so good.
But the flexibility trade-off makes it more useful for data driven sites. It also supports several types of authentication, and has it's own role management system.
Try your pick from the Content Management & Blogging section on ruby-toolbox.com as Brian suggested.
Refinery CMS is quite a nice CMS-System. There are a couple of Engines available to solve a few common problems.
But the truth is there is nothing in the rails world compared to what you get with wordpress (ease of use, extensibility etc.).

Refinery CMS to do mini-CMS

Just curious: I have to do a mini-CMS that allows users to add "pages" using a template. Each of the produced pages has/is an entry form and a "received" page.
I can visualize this in Rails pretty easily, but I'm wondering if there's any advantage to using a CMS like Refinery. Thoughts?
I was supprised to see Phil Arndt's answer voted down - I guess that it's hard to gain trust if you're involved in the product you discuss.
As for your question: sure you can build that site yourself, and most likely it will be simpler and will cost you less time than diving into the RefineryCMS documentation.
However most likely this site will evolve, your client will come up with more requirements, and it'll become harder to keep up with the complexity of the project.
Further more, you'll get more similar questions from other clients. Similar, but not identical, an you'll have to start from scratch every time.
A cms framework such as Refinery becomes an interesting choice at that moment. A framework gives you bigger building blocks than the Rails framework itself, so you can build faster. You won't have to reinvent the wheel for every customer request, since it will often be similar to what other people have built and shared (the "engines" in the case of Refinery). So the time you invest to learn to use the framework will pay off.
So in your case, even if you've already implemented your mini-cms, I'd consider redoing it in refinery or another framework CMS before you end up building your own CMS in which you'll have to duplicate all of the work already done for other CMSes...
One advantage to Refinery is that it has a very active (and growing) community of developers with an increasing number of 'engines' built to handle custom requirements. Also, by using an open source solution you have the opportunity to join in by providing patches for anything you think could be improved.
Another new advantage to Refinery is that it can hook straight into an existing application by following the very few steps in the integration guide.
Of course, this is all in addition to the fact that it aught to save you a lot of time as this use case has been carefully thought out over years of development with over 105 contributors and a large number of websites running smoothly in production.
Cheers,
Phil

Pitfalls in using Silverlight for a spreadsheet-type web application module?

This question contains a lot of background information, to make sure you fully understand why we are looking at these technologies.
The question is basically this:
For a large, spreadsheet-type, module that we need to develop for our webmodule for our application, are there any pitfalls we should know about if we decide to use Silverlight for it?
Issues we already know, and don't need any discussion/reminders about:
We're aware of the problems around using a plugin-type solution, which may or may not be installed on the users machine (and in some cases, probably can't be installed). These risks needs to be mitigated, but we're aware of them. Please don't get hung up on this.
We're a .NET company, so while ruby on rails and lots of other different platforms and architectures are good for this solution, they are not in the scope of the decision here. We have lots of code already written in .NET that we need to take advantage of, otherwise the project will never be finished regardless of platform.
Background
We have a web module for our application with employee-related information and some input forms. Our Windows desktop application is mostly a department leader type of application, to manage employees, but the web module contains mostly employee-centric functions. The web module contains mostly report-type webpages, to list information from the system, or input-forms.
The module we need to add now is more of a heavy spreadsheet type application. You change something one place, and something changes somewhere else, like sums, what is enabled/disabled, etc.
We know we can manage all of that with AJAX, but another issue here is that the application will potentially load a lot of database data in order to put the data in front of the user, and with a AJAXy solution, we're afraid that the request/response method here will have to reload quite a lot of information on every request, even to respond to seemingly easy questions.
A way to mitigate that would basically be to load information into a Session-object or similar, but that's a big no-no, so we'd rather not do that. This is a multi-user module, and some of the data is rather static, but some of the data is also going to have to be refreshed from time to time, so if 10 users loads a lot of data into the session, that's going to be a pretty big memory-hit.
We will be using ASP.NET (MVC) for this if we choose to go this route, that is, developing the module in pure HTML and similar technologies.
Then we looked at Silverlight, and would then load all the information down into the Silverlight application on the client. It would hold the current state, and would only need to touch the database to refresh some of the information, some of the time, instead, as we think the request/response model with ASP.NET (MVC) would work, on every little request.
But, since we have only done minor things with Silverlight, we're not that experienced with it, and we're afraid that some assumptions we might have, stated or unconcious, turns out to be wrong or flawed, which will make this project impossible or very hard to manage at some point.
For instance, just to take an example, is there a limit to how much memory the Silverlight application is allowed to load (I know, if I have to ask I can probably not afford it), for instance if there is a limit on 10MB, then that would be nice to know about before we're midway and start to load the really heavy data.
To make it simpler to give examples, let's just assume we're building a spreadsheet, that has so much data, that for the simple "changed a number here, what else changed", too much data from the database has to be loaded for a proper request/response model to be used, and if we move the entire thing to Silverlight, what will make that project hard or impossible?
Knowing about such things would at least give us the ability to consider if the price is acceptable.
In short, why should we not use Silverlight for this and instead go for ASP.NET (MVC)?
And again, "use Ruby on Rails instead", is not really an answer here. The options are ASP.NET (MVC) which we have experience with, or Silverlight which we don't but can gain.
Of course, if Ruby on rails, given that we'd have to start pretty much from scratch infrastructure-wise, and have to learn a new programming language, and framework, and download and learn a new IDE/tool, if it would still allow us to cut the development time in half, then please give us some information about how that might work, but I daresay that won't really happen here.
You should know that Silverlight (version 3.0) does not support any printing whatsoever, which to me sounds like a whopper of a showstopper for you (sorry, I couldn't resist). The good news is that full printing support has been added in version 4, but that is still in beta. Rumours say it should be out before the summer if everything works out according to plan, so if that fits with your roadmap I would use SL4 right from the start.
There are no memory limitations in Silverlight, but for the local storage (IsolatedStorage) mechanism there is a default limit of 1MB. But you can easily get around that by asking the users permission to increase the local storage space when he/she starts up the application. More on that here: Silverlight Tip of the Day #20 – How to Increase your Isolated Storage Quota.
(Edit)
Aside from the missing printing functionality that will be fixed in SL4 I cannot see any problems with your scenario. I would easily take the Silverlight route if I were you, especially since you already have extensive knowledge of .NET/C#.
For a rich interface as you've described, I would definately go with Silverlight or Flash rather than a html/javascript/ajax solution.
These technologies make for much better and consistent interfaces across platforms, you can buy in various components to speed things up and support things like copy-n-paste and code in a more structured way.
Another element is skills, if you have the skills to achieve it in a particular technology, then go with that.
To the answer you question the best way I can; you should not use silverlight if you decide to use flash.
HTH

What is your favourite Rails admin tool and why?

What is your favorite Rails admin tool and why? By admin tool, I'm referring to those that let some users add records for all the tables, like the tool shipped with Django.
This question is subjective and I believe the matter is subjective, but I think it would still be nice to be able to read other people opinions and gather data on the strength of each tool. Feel free to also comment on why you are not using a particular tool.
Looking around I've seen these ones:
Streamlined
Typus
admin_data
active_scaffold
full list
I think it would be excellent if there was one answer for and one answer against each tool and we just add information to each of them, in a very encyclopedic way, but I'm not sure if that's doable. Of course, this question is a community wiki.
In my experience Streamlined, Active Scaffold etc. often ends up limiting you and slowing you down in the long run, although it can be very efficient in the short run.
By combining the Inherited Resources and Formtastic plugins you can produce controllers and forms for your models just as fast as with a full-stack admin tool plugin, and it will leave you with greater flexibility and extensibility.
The tradeoff, however, is that neither of these plugins will give you the fancy lists that the admin tools give you. So as you say, it is indeed a matter of taste.
I've been using admin data in my last few projects and find it far superior to ActiveScaffold. When I used AS, it was always trying to do too much and that led to some problems. Admin data is completely non-intrusive. When it can't handle something in your data, it just displays a message instead of breaking your app.
I've been using ActiveScaffold for awhile. I feel that I have pushed its limits fairly far and it reacts pretty well (i.e. it's pretty robust). I customize it considerably so that non-technical users can jump in and manage their own websites with it. Those who take the initiative to work with it seem to like it. I do find the default interface confusing at times but you could change that completely if you wanted. AS is very customizable. On the downside, I've definitely grappled with my fair share of AS bugs, but the project does improve and I'm satisfied with its results. I have never even heard of the other admin systems you posted, but Typus and admin_data look nice. My biggest concern would be how easy I can customize them for use by non-techs.
I myself have used active_scaffold quite a bit and like it for certain tasks but I believe its niche is for power users not for mortals per se.
Streamlined was an interesting option but is officially unmaintained now which sucks. It really was a beautiful product but it never really seemed to get a lot of attention from the community so maybe they gave up on maintaining it publicly.
I've also not used Typus and admin_data but I ran into some references to Typus last night so clearly some very smart people are looking at it very hard.
On a last note, I think this blog post really summarizes an opinion I've come to recently after working with a Drupal firm for a bit. I believe that the reason admin interfaces haven't received the same amount of love is that Rails is built primarily for applications rather than content, which means that the people looking at backends are typically not mortals or can stand to look at an ugly backend.

Ad/Banner Management/Rotation for Ruby on Rails?

I have a niche site that I'd like to sell banners for directly, rather than going through adsense. I need a system to manage the whole process: displaying ads and an administrative interface to manage them. It doesn't have to be anything terribly fancy, although open source is greatly preferred so that I can grow the system as needs be. Since the site itself is in Rails, I would prefer something for that environment. Googling turns up bunches of them in PHP, but the results are a bit polluted and I didn't have any luck finding one that was done in/for Rails.
If I don't find one, I suppose I'll see what I can do to hack together something and release it myself under an open license.
Another possibility is this: http://www.google.com/admanager - anyone have anything to say about it? Is it right for someone just selling a few ads for a not-so-big site?
Thanks,
Dave
The company I work for has several Rails projects. We searched for a Rails banner management system but we didn't find any commercial/open source project available.
We integrated Google AdManager and I have to say it's definitely a good choice. It lacks some advanced features available in Openx, but we didn't miss them for our projects.
There really aren't any full-featured rails advert managing tools.
I created one gem/engine that helps to manage and render different banners and placements on depending parameters that you set when rendering your views in rails, see:
https://github.com/holli/advert_selector
For simpler setups with consistent banner sizes and targetings, you should probably use dfp: http://www.google.com/dfp/info/sb/index.html
You can give this rails-ad-server a try. Please give us all a feedback too.
http://github.com/coolblade/rails-ad-server
Dave,
we have recently released AdServerBeans MyAds v.0.4 (http://www.adserverbeans.com) which you might be interested to take a look at. It's open source and we position it as an alternative to OpenX.

Resources