Good CMS (preferable java-based) to integrate with grails app - grails

We have grails application that is damn good. Grails application will be run under tomcat/jetty. I'm looking for a good (preferable java-based) CMS which could be deployed to same webserver and integrated with our application. Our app provides some data (xml/json) and we need that CMS display this data on some static pages (I'm thinking of java-script gadgets that just connects to our grails same-host-same-port-different-context app).
If someone know some other techniques how to easily embed data into CMS static pages - would be nice to hear.

You can use Weceem CMS
Depending on what features you need for your CMS, Weceem could fit to your requirements. It is a grails plugin itself (with advantages like being unobtrusive).
Be aware that currently it is not compatible with Nimble and Commentable plugins (will be in version 0.9).

I haven't had a chance to play with it, but Alfresco Plugin allows you to connect to Alfresco. I imagine it's more of a document management integration at this point, but Alfresco can handle WCM as well.

You ought to find the answer at http://www.cmsmatrix.org/
It's the first I would recommend to anyone looking for a CMS. Use the wizard, select the features you want, get details of matching CMS and make your comparison then choice.

Related

Create Content Management System (CMS) in grails

I'm an intermediate user in grails and I want to create a Content Management System and an end user application in grails. It mainly involves video uploading and downloading in cloud servers.
I seen the Most Important features for cms
Can any one suggest about architecture and how it can be easily implement in grails?
Thanks in advance.
I agree with #elias that a CMS needs tons of work.
As to your question, I suggest you use an existing one, just like #mostkiteau has mentioned, or go to http://grails.org/plugins/search?q=cms for more CMS plugins for Grails.

RefineryCMS for RESTful API

I need to build a site with a CMS interface and RESTful api (to use with a clientside framework, angularJS). Would RefineryCMS work for me?
Also, does anyone have experience with Refinery, LocomotiveCMS, or any other rails-based CMSs? Do you prefer one over the other? Why?
Thanks!
What do you mean by CMS interface? Like you need to allow users to create Pages, embed images/files, etc?
I use Refinery alot, and really like it. However, it has no built in support for a RESTful api like you want, I'm assuming you mean via JSON or something. To do this you'd have to override the refinerycms-core engine and it's crud.rb file. This is where Refinery defines all the REST actions dynamically. I'm sure you'd have to also override other engines depending on which functionality of the core engines you're using. I'd probably try doing a proof of concept first, then on seeing how smoothly that goes, decide to continue or try another CMS framework.
Another lightweight alternative to Refinery is Comfortable Mexican Sofa. It was pretty easy to add on to a full Rails app I maintain to provide CMS functionality. Though I didn't have to override any internal parts of it. I've never used LocomotiveCMS. You could also role your own CMS and use something like ActiveAdmin for the backend.

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?

ruby on rails vs codeigniter

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.

Options for distribution of an offline Ruby on Rails application

I am developing an application in using Ruby on Rails, mostly as an excuse to learn the language.
This is not intended to be a web-based application - and perhaps I have chosen the wrong language, but...
My understanding is, that in order to run an instance of this application on somebody else's computer, they would need to install ruby on rails, and a webserver (or webrick, perhaps), as well as my application code.
I am just curious if there are any other options for distributing my application as a standalone app, or perhaps just a simple way to package up a web browser and ROR together with my app for a simple, one-step install?
I have personally never needed to do this. But, I have ran across this tutorial http://www.erikveen.dds.nl/distributingrubyapplications/rails.html that I think will be helpful. The tutorial covers how to actually convert a rails app into a standalone exe file.
Note, Slingshot appears to be a dead project (see comments). I'll leave this answer here for historical purposes and the off-chance that it comes back
Joyent's Slingshot might be a good bet.
Joyent Slingshot allows developers to deploy Rails applications like a standard desktop application, which work online and offline (with synchronization), have drag and drop, and interact with all the other desktop applications.
With Joyent Slingshot:
Create a hybrid Web/desktop application
Synchronize online and offline data
Use the same code for online and offline application(s)
Deploy and update your application easily
Drag into and out of application
Here are some further links to help with your evaluation and/or to help you get started:
Introducing Joyent Slingshot
Basic application walkthrough
Slingshot wiki
The way most people ship ruby programs, including Rails webapps, as a standalone exe is via rubyscript2exe. They describe how to package a Rails application at http://www.erikveen.dds.nl/distributingrubyapplications/rails.html. Ruby, Rails, and all the associated libraries will be included in the EXE file.
As others mentioned, Ruby is not necessarily Rails and if you really want an easy way to write a distributable GUI application in Ruby, Shoes is an excellent place to start looking.
Gears on Rails maybe?
You could always consider compiling your Ruby to JVM byte-code (via JRuby) or .NET byte-code (via IronRuby) to distribute to people who have those virtual machines and don't want to install a Ruby runtime.
You might want to check out Shoes for building desktop applications in Ruby. Rails really is tuned for building websites.
You can include Ruby on Rails by freezing it to the version of Rails you want to use in your project. They call this Freezing. The user will not have to install Rails to use your application. You can do this with any library you use in your project. If the project uses a library, just place it under the Vendor folder in your project. Then use a tool similar to what #Josh answered with to package it.
You will need a web server to run the project though. There is no way around this. Ruby on Rails is just like ASP.NET in this regard, in that it is a server side framework. The server runs the code and outputs the HTML to the browser by using the Rails framework.
Unfortunately, you may have picked the wrong framework to do what you want. Instead of Ruby on Rails, you may want to check out Shoes, which is a framework for developing GUI applications using Ruby.
You do not specifically say whether it is supposed to be a GUI application or not. From the other answers, I would guess so.
Therefore, you need to clarify what your goals are. RoR is a specialized framework for web applications. If your goal is to learn RoR, I'd say to get yourself some inexpensive web hosting and make yourself an app. If your goal is to learn Ruby, not necessarily Rails, then Shoes, IronRuby, JRuby, MacRuby and others may be good options to look at.

Resources