

Show HN: Automated Rails development with Prelang - egn
http://prelang.com

======
DanielKehoe
Here's my feedback, as the developer of the Rails Composer tool
[[https://github.com/RailsApps/rails-
composer](https://github.com/RailsApps/rails-composer)].

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/](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.

~~~
egn
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.

All the best.

------
xionon
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...

~~~
egn
Really appreciate the detailed feedback.

* 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.

Thanks again.

~~~
ukd1
Re the auth issues, why not let people clone / download a zip direct from you,
skipping the github auth.

~~~
mgkimsal
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.

------
kitwalker12
I love it. Adds an awesome GUI to features that I love in RailsComposer. Would
love the ability to add sidekiq, postgres, rails_12factor & sass

------
bebbs
This is a fantastic tool, really well implemented. Will definitely be
following along how this develops in the future.

------
nthj
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. :)

~~~
egn
Thanks! A deploy process like that is coming relatively soon... I've been
working on it today in fact. I'm glad you think that would be valuable.

~~~
sergiotapia
I know of at least 3 people who would kill for this feature. Imagine
generating a starting point and have it deployed immediately. Wow.
Gamechanger!

------
stravarius
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!

------
aantix
The demo video looks fantastic. Great work you guys.

------
sergiotapia
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!

If you're curious see here:
[https://github.com/sergiotapia/prelangtest](https://github.com/sergiotapia/prelangtest)

I'll use to launch my next project because Facebook+Email authentication is a
pain in the ass to implement.

------
jpetersonmn
Is this something I can download onto my own machine and run, or I need to do
it through the website?

~~~
egn
It's all through the web.

------
flylib
good work, known of this for awhile and been impressed.

came across this one today which is trying to doing something similar also

[http://www.drystorm.co](http://www.drystorm.co)

------
ShaneWilton
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.

------
carlosdp
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.

------
rock_hard
Great work!

mongoid support would be highly appreciated :)

------
matthuggins
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.

~~~
bsmith
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.

------
kitsched
I only watched the presentation video and I'm being nitpicky but by convention
git commit messages should be present tense.

~~~
egn
Ah, you're right. Thanks.

------
samirmenon
I have been thinking about something like this for about a year now...you've
done an excellent job! Good luck!

------
dang
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](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!

~~~
egn
I'm deploying with the email gate removed now. If I don't hear back, I'll just
make a new "Show HN" post.

~~~
dang
Happy to put Show HN back in the title.

------
vinceguidry
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.

~~~
jamii
[http://www.web2py.com/](http://www.web2py.com/)

[https://www.youtube.com/watch?v=k7lE-R16H4c](https://www.youtube.com/watch?v=k7lE-R16H4c)

~~~
vinceguidry
Yeah, not even close.

