Right now I'd say we need to make it easier to work with nested params so you can easily save Parent + (n) children. Easier handling of uploaded files is another big one. It's being actively worked on right now. There are a few more escape hatches that are needed when you need to break out of the framework. But overall it is fairly full featured.
Hello! I'm the creator of the Lucky web framework https://luckyframework.org. I've been building it for about 3 years and we've got a number of people using it in production.
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
author of Lucky here. Would love to hear what you don't like about Lucky's ORM (Avram). It is not quite as feature complete as ActiveRecord, but in some ways it has more features (like being able to do more advanced queries in Crystal `>`, `ILIKE`, etc.
This looks awesome! What backend framework are you using? I'm the author Lucky and was wondering if you happened to use it on the backend since you are using Crystal
Author of Lucky here. The title may have been a bit misleading. Lucky is not Ruby on Rails for Crystal. It has a different take on nearly everything in Rails, but it aims to solve the same problems: make web development fun and productive.
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.
I agree. I've been using Rails for 12 years and it is my second favorite framework :)
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.
I do not think Lucky is Ruby on Rails for Crystal. There are new patterns for just about everything. Routing is different, querying is different, views are very different.
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 can use Lucky without a database, but if you use one, Postgres is the only support database.
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
I've played around with a number of languages and settled on Crystal because:
* 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
TL;DR I totally agree. This can be done with Crystal and Lucky but I wanted to keep the example simple.
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
I've been working on https://luckyframework.org and I can say that meta programming is extremely powerful and much easier for me to use than either Ruby or Elixir.
You can check out our roadmap to 1.0 here: https://docs.google.com/document/d/1EYzx37Kq5h7iLH9SQTFyXNwb...