I got started with "automated Rails development" (as you call it) using Michael Bleigh's RailsWizard. He built it at RailsRumble 2010 as a website that generates Rails apps. I forked it as Rails Composer when the project was abandoned, and developed it further, purely as a command-line tool. It's been the most popular project I've worked on in the Rails community, and also more work than I ever expected.
I've had a huge community supporting Rails Composer as an open source project so I get a reliable stream of issue reports and pull requests. And I've built a business model to fund the project, by asking supporters to pay $19/mo, and offering my in-depth Rails tutorials as a reward for subscribers. That's the RailsApps project [http://railsapps.github.io/].
Rails Composer is popular because developers really like a tool to build starter apps, and it's a lot of work because changes to Rails and gems constantly introduce entropy. I think you'll face a similar challenge with Prelang, maintaining the product as gems change. Developers want an automated Rails development tool because a good starter app will give them a reference implementation, code that is properly configured and guaranteed to work with the latest versions of all the popular gems. You'll have to keep checking and tweaking as gems and Rails versions change. That job will be easier if you limit the starter app to use only the most popular stack and a small set of popular gems, as you've done so far. You'll also need to monetize the project to be able to maintain it (I doubt it can succeed as a spare-time project). As a gauge of time required, I work fulltime on RailsApps, splitting my time between developing Rails Composer and writing the tutorials for the project's supporters.
Erik, I hope you do well with Prelang. You've created a beautiful interface, the project is ambitious, and judging by Rails Composer, developers will want it.
Thank you for the kind words and continued support/feedback, Daniel. I'm guessing we'll keep bumping into each other for a while. :)
I definitely hear you on the Gem volatility and agree on monetization. Eventually, I'd like to have a team working full time on the builder in addition to user-contributed features. Surely, it's a headache to think about hundreds of features past what Prelang has now but I believe it's doable with the proper architecture.
This looks pretty neat. Looking forward to you getting the disabled features ironed out.
Some notes:
* Project generation with most of the features and a couple models is taking a really long time. I'm sure it's a background job, and I could walk away if I wanted to, but it'd be nice to know that the system would email me to let me know when it was done
* Sometimes UI widgets flicker when switching between sections. I'm guessing a lot of those styles are being added with Javascript, not CSS? You might consider switching to a CSS framework that gives you a good look and feel, but doesn't have to call some JS function to apply styles.
* The auto-capitalization on model names, and auto-lowercasization (?) on field names, was a nice touch, and made me feel happy about the product.
* It would be really cool if users could write and submit plugins / hooks. I'd be interested in background jobs that weren't DelayedJob, and deployments that weren't Heroku, for instance.
* I'm guessing that "public repos only" is a temporary feature, because GitHub doesn't have a way to authorize an app to write only to certain private repos, correct? Because most of my work is on private repos, and I can't see my organization using something like this without the ability to create projects (even scaffolds) privately
* A feature for Vagrant would be nice :-)
I'll be watching this! We've currently got several people switching from ColdFusion to Rails; they're good programmers, but they don't know the ecosystem or the conventions. This gives them a really good starting place. Thanks for sharing.
Edit: Also, this is the first time I've seen app/views/elements/, and I'm kinda pissed I haven't thought of using a different directory for partial layouts before. Now I've got some app/views/layouts/ directories to clean up...
* Email on generation is a good idea. Also, I don't have a Gem cache system yet which will help.
* Flickering is because some of the inputs have to compute a lot of values @ Backbone model layer. Definitely opportunity for optimization.
* Thanks :)
* A lot of users have asked for user contributed features. The problem is it's hard to extract an API from my generation system but I hope to in the future.
* Very doable. I just haven't written private repo support in because I'd have to deal a lot of auth/selection issues which isn't a priority right now.
* Vagrant would be great.
For a lot of these, I just don't have time yet but all candidates for the future.
presumably each step is being done as a git commit, so there'd need to be a git install done locally for creation, then zipping, then cleanup afterwards. I don't think it's unreasonable, but I'm guessing there's some 'post to github' gem that's being used directly right now and this other option would require more work.
This is really cool. Have you guys considered Heroku integration? One-click generation + deployment could be a really slick MVP tool (although I worry about how it would affect client expectations were they to ever find out about it. :)
This is truly an innovative addition to the Rails ecosystem. I'm learning Rails and Prelang offers a great way to read code that's written with best practices in mind. All the best!
This is really interesting! I created a simple app to CRUD Cities and Countries and it works as you expect it to. Code is also what I would have written given the simple spec.
Uses the latest Rails and clean code generation. Well done!
This looks like a really great tool. It's a shame Github doesn't have more fine grained permissions though - I'd love to give it read/write access to repos it creates, but it requiring global read/write access means I'll probably never use it.
This looks great! I like how this one concentrates on the back-end features more than the views. It just generates all the backend/routing and lets you put in the special view logic yourself. Good way to not get distracted trying to master a WYSWIG.
Cool idea, but I immediately left when I saw the only background process option was DelayedJob. With greatly advanced options like Resque and Sidekiq, I fail to see a need for DJ personally.
At my job, the lack of high reliability/availability options for Redis was why we chose DelayedJob. This may have changed since we made that decision, but at the time there was no consensus on a solution in the Redis community.
We're taking "Show HN" out of this title because the software isn't ready to be tried out.
Please read the new Show HN guidelines: https://news.ycombinator.com/showhn.html. Landing pages and email signups are explicitly excluded. But when your work is ready for people to play with, please come back and do a Show HN then!
Hey dang, I'm sending all invites right as I get requests now and the email gate will fully come down soon. Is there any chance I can get the "Show HN" back?
This is why I love Ruby. It's got all the built-in language features that allow one to perform this sort of abstraction, and a large-enough user base so that powerful ideas like this will eventually be implemented. I couldn't imagine anything like this existing in even Python.
I got started with "automated Rails development" (as you call it) using Michael Bleigh's RailsWizard. He built it at RailsRumble 2010 as a website that generates Rails apps. I forked it as Rails Composer when the project was abandoned, and developed it further, purely as a command-line tool. It's been the most popular project I've worked on in the Rails community, and also more work than I ever expected.
I've had a huge community supporting Rails Composer as an open source project so I get a reliable stream of issue reports and pull requests. And I've built a business model to fund the project, by asking supporters to pay $19/mo, and offering my in-depth Rails tutorials as a reward for subscribers. That's the RailsApps project [http://railsapps.github.io/].
Rails Composer is popular because developers really like a tool to build starter apps, and it's a lot of work because changes to Rails and gems constantly introduce entropy. I think you'll face a similar challenge with Prelang, maintaining the product as gems change. Developers want an automated Rails development tool because a good starter app will give them a reference implementation, code that is properly configured and guaranteed to work with the latest versions of all the popular gems. You'll have to keep checking and tweaking as gems and Rails versions change. That job will be easier if you limit the starter app to use only the most popular stack and a small set of popular gems, as you've done so far. You'll also need to monetize the project to be able to maintain it (I doubt it can succeed as a spare-time project). As a gauge of time required, I work fulltime on RailsApps, splitting my time between developing Rails Composer and writing the tutorials for the project's supporters.
Erik, I hope you do well with Prelang. You've created a beautiful interface, the project is ambitious, and judging by Rails Composer, developers will want it.