You can check out our roadmap to 1.0 here: https://docs.google.com/document/d/1EYzx37Kq5h7iLH9SQTFyXNwb...
60 karma · joined August 8, 2014
You can check out our roadmap to 1.0 here: https://docs.google.com/document/d/1EYzx37Kq5h7iLH9SQTFyXNwb...
It still lacks some features found in bigger frameworks, but is nearing 1.0 and gaining many new contributors that are helping us fill in the gaps.
Feel free to hop on our chatroom to ask questions about it. We try to be super friendly and love answering questions and getting feedback https://gitter.im/luckyframework/Lobby
If you have any questions or feedback let me know. Always happy to help.
If you want to chat about Lucky feel free to hop on https://gitter.im/luckyframework/Lobby
But it also adds: and make writing fast applications easy, and prevents bug from making it to production.
If you use Lucky now, you will be missing the vast ecosystem that Ruby and Rails provide, but I think that is a temporary problem. Lucky and Crystal are growing quite quickly.
Lucky and Crystal are missing the ecosystem, which the article mentions, but it also adds a lot that Rails is missing. Lucky is much much faster and the speed is effortless. Rails can be fast, but based on my experience so far, you have to do some work to get reasonable speeds.
Lucky and Crystal have also caught a lot of bugs, which makes development much more pleasurable, and happier customers.
Right now, it probably takes longer to use Lucky and Crystal. Like you said, the ecosystem is lacking so you often have to write code that Ruby would have a gem for, but in the long term, this will be solved. I'm very confident of that.
It is Rails-like in the sense that it is aimed at productivity and developer happiness and that it aims to have most of what you need in one package.
Of course Ruby has a better ecosystem, this is mentioned in the article. Lucky (and Crystal) have a long way to go, but things are progressing rather quickly
You don't need node or yarn if you are using API mode. You can generate an API only app with `lucky init <app-name> --api`
The process manager is used to start the watcher process. You can use Lucky without it by running `lucky watch` instead of `lucky dev`, but using the process manager is nice because you can also run asset compilation, job queues and whatever other processes you app needs to run.
Lucky can be stripped down further still, but the documentation focuses on the more opinionated route
* Speed
* Pleasant to use type system
* Doesn't get in my way
* Catches lots of bugs
* Fun!
I wrote http://luckyframework.org/ to write web applications with minimal boilerplate and as few runtime errors as possible. Take a look and let me know what you think
I'm Paul Smith, the creator of Lucky.
I created Lucky because I wanted a framework that was fast, fun, productive, and caught lots of bugs that I would normally miss.
I'm happy to answer any question you have!
Lucky is a web framework written in Crystal that helps you build web apps quickly, catches bugs for you, and runs incredibly fast.
This article explains how actions and routes are built to catch as many bugs as possible and help make development easy.
Let me know what you think :)
My colleagues wrote a library that does something like this. You may want to check it out: https://github.com/thoughtbot/wrapped
I will go more into depth about leveraging the type system with Lucky for even better data modeling in one of the Lucky guides
I totally agree with your sentiment and you have a lot of great points. This post was not meant to get too deep into things right off the bat, so it left off a lot of this stuff.
In this case the phone number always has a country code with +1 because we have a validation that ensures it won't make it into the database without it. We also only accept US country codes in the validation.
I get your point though that just having a `String` doesn't really guarantee that those validations took place, luckily, LuckyRecord has the idea of custom types that can define their own casting and validation behavior. So we could have done this:
``` field phone : UnitedStatesPhoneNumber? ```
And it would validate that the string param is a valid US number before saving. It would also do that for queries and you could add whatever other type specific methods you want to it. so you could do
``` def formatted_fax_number phone.try { |number| number.without_country_code } end ```
But like I said, I think this is fitting for a whole separate post, rather than an intro style post :D
You can see a bit of what the macro system enables here: https://robots.thoughtbot.com/lucky-an-experimental-new-web-...
It generates a bunch of query methods and type specific querying. Without the macro system this would have been impossible.