Kristal yüklemek ve ilk projenizi parçaları kullanarak oluşturmak, çalıştırmak, test etmek ve oluşturmak için adım adım bir eğitim.
Birkaç basit adım izlerseniz kristalle başlamak hızlıdır. Bu kılavuzda, Crystal’i kuracak, yeni bir proje iskele, küçük bir program yazacak, testler çalıştıracak ve bir serbest bırakma yapısı üreteceksiniz.
Hızlı üretken olabilmeniz için minimal ve pratik tutacağım.
1) Crystal’i kurun
brew install crystal
-
Linux
- Distro-spesifik talimatlar için resmi kurulum sayfasını kontrol edin: https://crystal-lang.org/install/
-
Doğrulamak
crystal --version
shards --version
Muhtemelen yakında isteyeceğiniz isteğe bağlı araçlar:
- VS Kod Uzantısı (Crystal + LSP): https://marketplace.visualstudio.com/items?itemname=crystal-lang-tools.crystal-lang
- Linter (Amoeba): https://marketplace.visualstudio.com/items?itemname=veelenga.crstal-ameba
2) Yeni bir proje oluşturun
Kristal Kullanımlar shards
(Ruby’s Bundler gibi) Bağımlılık yönetimi ve proje iskele için.
- Uygulama Şablonu (CLI uygulamaları ve hizmetleri için önerilir):
mkdir hello_crystal && cd hello_crystal
shards init app hello_crystal
- Kütüphane şablonu (Shard/Gem benzeri bir paket inşa ediyorsanız):
mkdir my_lib && cd my_lib
shards init lib my_lib
Bu temel bir yapı oluşturur (bir uygulama için):
hello_crystal/
├─ shard.yml
└─ src/
└─ hello_crystal.cr
3) İlk programınızı yazın
Açık src/hello_crystal.cr
ve bir selamlama yazdırın:
# src/hello_crystal.cr
puts "Hello, Crystal!"
Çalıştır:
crystal run src/hello_crystal.cr
4) Bağımlılıkları yönetin (bunlara ihtiyacınız olduğunda)
Bağımlılık eklerseniz shard.yml
bunları şunlarla yükleyin:
shards install
İlk “merhaba dünya” için genellikle buna ihtiyacınız olmayacaktır, ancak HTTP istemcileri veya web çerçeveleri gibi kütüphaneleri çektiğinizde çok önemlidir.
5) Kodunuzu biçimlendirin
Crystal bir şekillendirme:
crystal tool format
Tüm kaynakları biçimlendirmek için proje kökünden çalıştırın.
6) Basit bir test ekleyin (Spec)
Spesifik bir dosya oluşturun:
# spec/hello_crystal_spec.cr
require "spec"
require "../src/hello_crystal"
describe "hello_crystal" do
it "runs without raising" do
expect { Crystal.main }.not_to raise_error
end
end
Uygulamanız tanımlamazsa Crystal.main
bunun yerine yazdığınız bir işlevi test edebilirsiniz. Başlangıç dostu bir desen için, uygulama kodunuzu bir modüle sarın:
# src/hello_crystal.cr
module HelloCrystal
def self.greet(name : String = "Crystal")
"Hello, #{name}!"
end
end
puts HelloCrystal.greet
Ve test edin:
# spec/hello_crystal_spec.cr
require "spec"
require "../src/hello_crystal"
describe HelloCrystal do
it "greets with default name" do
HelloCrystal.greet.should eq "Hello, Crystal!"
end
it "greets a custom name" do
HelloCrystal.greet("World").should eq "Hello, World!"
end
end
Testler çalıştırın:
crystal spec
# or verbose:
crystal spec -v
7) Bir ikili oluşturun
İnşa etmenin iki ortak yolu:
crystal build --no-debug --release src/hello_crystal.cr -o bin/hello_crystal
- Parçaları kullanmak (ne zaman çalışır
shard.yml
hedefleri tanımlar):
shards build --no-debug --release
İkili çalıştırın:
./bin/hello_crystal
Üretim benzeri yapılar için (katı bağımlılıklar ve geliştiriciler yok):
shards build --release --no-debug --production
crystal tool dependencies ./src/hello_crystal.cr
9) İsteğe bağlı: AMEBA ile Tüy Ticaret
Ameba, Crystal’in kod tarzı linter (Rubocop’a benzer).
brew tap crystal-ameba/ameba
brew install ameba
ameba
ameba --fix
Görsel Genel Bakış
İşte ilk projenizin basit bir akışı:
flowchart LR A[Install Crystal] --> B[shards init app hello_crystal] B --> C[Edit src/hello_crystal.cr] C --> D[crystal run] D --> E[crystal spec] E --> F[crystal tool format] F --> G[shards build --release] G --> H[Run ./bin/hello_crystal]
Sırada ne var?
- Popüler parçaları keşfedin:
- Web çerçeveleri: Kemal (Sinatra benzeri), Lucky ve Amber (Rails benzeri)
- LINTRE: AMEBA
- HTTP İstemcisi: Crest
- Bir CLI aracı, bir web hizmeti veya küçük bir kütüphane oluşturun ve bir parça olarak yayınlayın.
İlk kristal projenizi yeni oluşturdunuz, test ettiniz ve oluşturdunuz. Küçük tutun, hızlı bir şekilde yineleyin ve kristalin hızının ve ifadelerinin tadını çıkarın.