
Das Ziel: Verhindern Sie Fehler, vergessen Sie die meisten Leistungsprobleme und verbringen Sie mehr Zeit mit Code, anstatt Tests zu debugieren und zu beheben.
Zusammenfassend lassen Sie sich schnell, unterhaltsam und einfach das Schreiben von atemberaubenden Webanwendungen machen.
Lucky hat eine frische neue Reihe von Führern, die es einfach machen, loszulegen.
Fühlen Sie sich frei, Hallo zu sagen oder Fragen in unserem Chatraum zu stellen.
Oder Sie können eine echte arbeitende App mit Lucky Jumpstart kopieren.
Um Lucky zu installieren, lesen Sie die Installation Lucky Guides für Ihr Betriebssystem. Die Anleitung führt Sie durch die Installation eines Befehlszeilendienstprogramms zur Generierung neuer Glücksanwendungen.
Bleiben Sie auf dem Laufenden, indem Sie @LuckyFramework auf Twitter folgen.
API (Haupt)
class Api::Users::Show < ApiAction
get " /api/users/:user_id " do
user = UserQuery .find(user_id)
json UserSerializer .new(user)
end
endget "/sign_in" für Nicht -Ruhestrouten einrichten.user_id -Methode wird generiert, da ein user_id -Routenparameter vorhanden ist.json , um JSON zu rendern. Extrahieren Sie Serialisierer für wiederverwendbare JSON -Antworten. # Set up the model
class User < BaseModel
table do
column last_active_at : Time
column last_name : String
column nickname : String ?
end
end? zu dem Typ, wenn die Spalte nil sein kann. Crystal hilft Ihnen dann, sich dann daran zu erinnern, keine Methoden anzurufen, die nicht funktionieren.last_active_at und last_name , da sie nicht als nilierbar gekennzeichnet sind). # Add some methods to help query the database
class UserQuery < User::BaseQuery
def recently_active
last_active_at.gt( 1 .week.ago)
end
def sorted_by_last_name
last_name.lower.desc_order
end
end
# Query the database
UserQuery .new.recently_active.sorted_by_last_nameUser::BaseQuery wird automatisch generiert, wenn Sie ein Modell definieren. Erben Sie davon, um Abfragen anzupassen.lower Methode in einer String , um sicherzustellen, dass Postgres alles in Kleinbuchstaben sortiert.gt , um die Benutzer vor mehr als 1 Woche aktiv zu machen. Lucky hat viele leistungsstarke Abstraktionen für die Erstellung komplexer Abfragen und typen spezifische Methoden (wie lower ). class Users::Index < BrowserAction
get " /users " do
users = UserQuery .new.sorted_by_last_name
render IndexPage , users: users
end
end
class Users::IndexPage < MainLayout
needs users : UserQuery
def content
render_new_user_button
render_user_list
end
private def render_new_user_button
link " New User " , to: Users :: New
end
private def render_user_list
ul class: " user-list " do
users.each do | user |
li do
link user.name, to: Users :: Show .with(user.id)
text " - "
text user.nickname || " No Nickname "
end
end
end
end
endneeds users : UserQuery teilt dem Compiler mit, dass er Benutzer des Typs UserQuery übergeben werden muss.Users::New . Übergeben Sie Parameter with : Users::Show.with(user.id) . Sie versuchen nicht mehr, sich an Pfadhelfer zu erinnern und ob der Helfer pluralisiert oder nicht - wenn Sie vergessen, einen Param an eine Route zu übergeben, wird Lucky Sie zur Kompilierungszeit informieren.column nickname : String? nil nilierbar würde Lucky die Seite nicht kompilieren, wenn Sie nur einen text user.nickname Stattdessen fügen wir einen Fallback "No Nickname" hinzu. Nicht versehentlich mehr leeren Text in HTML drucken! Sie müssen sicherstellen, dass die Kristallabhängigkeiten installiert werden.
shards installcrystal spec aus der Projektwurzel aus. Siehe Beitrag.md
Wir lieben alle Community -Mitglieder, die harte Arbeit geleistet haben, um das Glück besser zu machen. Wenn Sie einer dieser Menschen sind, möchten wir Ihnen ein T-Shirt geben!
Um ein Shirt zu bekommen, bitten wir, dass Sie einen bedeutenden Beitrag zum Glück geleistet haben. Dies beinhaltet Dinge wie das Senden von PRs mit Fehlerbehebungen und Feature -Implementierungen, beim Durcharbeiten von Problemen und der Bereitstellung von Anwendungen in realer Welt mithilfe von Lucky!
Um Ihr Hemd zu beanspruchen, füllen Sie dieses Formular aus.
Paulcsmith Paul Smith - Originalschöpfer von Lucky
Mit Beitragsröcken gemacht.
lucky watch basiert stark auf Sentry. Danke @samueleaton!