Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CrystalでもRailsを使いたいですか?

19,660 views

Published on

東京Crystal勉強会 #3 での発表資料

Published in: Internet
  • Be the first to comment

CrystalでもRailsを使いたいですか?

  1. 1. CrystalでもRailsを 使いたいですか? Masayuki Uchida @etmnk 2016. 1. 22 東京 Crystal 勉強会 #3 in 恵比寿
  2. 2. はい いいえ そんなことよりSinatraだ
  3. 3. はい いいえ そんなことよりSinatraだ →
  4. 4. Kemalはいいぞ
  5. 5. お前 is 誰? twitter : @etmnk github : @etmnk
  6. 6. Agenda 1. Crystal Awesome 2. WebFrameworksの大雑把な分類 3. Frostとは 4. Frostを試してみる 5. デモ 6. 取りあえず現時点で出来ること 7. Rackに関して 8. まとめ
  7. 7. Crystal Web Frameworks https://github.com/veelenga/awesome-crystal
  8. 8. 分類 Sinatra系 moonshine kemal Rails系 Amethyst Frost
  9. 9. 分類 Sinatra系 moonshine kemal Rails系 Amethyst Frost いいぞ
  10. 10. Frost • 現時点でもある程度動く • ver 0.2.0 • Crystal v0.10.2に対応
  11. 11. Frostを動かしてみる $ git clone https://github.com/ysbaddaden/frost.git $ crystal frost/src/cli.cr -- new frost_sample $ cd frost_sample $ crystal deps install
  12. 12. Frostを動かしてみる $ git clone https://github.com/ysbaddaden/frost.git $ crystal frost/src/cli.cr -- new frost_sample $ cd frost_sample $ crystal deps install
  13. 13. Oh..
  14. 14. その前に https://github.com/ysbaddaden/frost/pull/10
  15. 15. パッチを当てる $ git fetch origin pull/10/head:fix-project-generation $ git checkout fix-project-generation
  16. 16. 気を取り直して $ crystal frost/src/cli.cr -- new frost_sample
  17. 17. Generated create create Makefile create frost_sample.cr create shard.yml create .gitignore create app create app/controllers create app/controllers/application_controller.cr create app/models create app/models/.keep create app/views create app/views/application_view.cr create app/views/layouts_view.cr create app/views/layouts create app/views/layouts/application.html.ecr create config create config/routes.cr create config/environment.cr create config/application.cr (中略)
  18. 18. インストール続き $ cd frost_sample $ crystal deps install
  19. 19. 公式のサンプル参考 https://github.com/ysbaddaden/frost/tree/master/guides
  20. 20. 補足1 DB作成に関して $ createdb frost_sample_development $ createdb frost_sample_test $ cp config/database.yml{.example,}
  21. 21. 補足1 DB作成に関して development: adapter: postgres database: frost_sample_development username: postgres password: test: adapter: postgres database: frost_sample_test username: postgres password: config/database.yml
  22. 22. 補足1 DB作成に関して export DATABASE_URL=postgres://$USER@localhost/frost_sample_development
  23. 23. 補足2 $make run
  24. 24. 補足2 エラー(中略)
  25. 25. 補足2 手修正 instantiating 'with_output_buffer()' in ./app/views/layouts/application.html.ecr:5: instantiating 'name()' <title><%= name %></title>
  26. 26. デモ
  27. 27. 現時点でできること • config/route.crの設定に関して • resources :posts, only: %i(show index new create) • edit deleteは未対応
  28. 28. 現時点でできること • Modelの操作に関して(取り敢えずコード見たレベル) • 検索処理 • #{ModelName}.find(id) • #{ModelName}.find_by({column1: hoge , culumn2: huga }) • #{ModelName}.all.pluck( column1 ) #未確認
  29. 29. 現時点でできること • Modelの操作に関して(取り敢えずコード見たレベル) • 追加 • hoge = Hoge.new • hoge.column1 = aa • hoge.column2 = bb • hoge.save
  30. 30. 現時点でできること • Modelの操作に関して(取り敢えずコード見たレベ ル) • 削除処理 #全体的に未確認(更新も同様なので省略) • #{ModelName}.delete_all • hoge = Hoge.find(id) • hoge.delete # 未確認
  31. 31. Rackに関して https://groups.google.com/forum/?fromgroups#!searchin/crystal-lang/rack/crystal-lang/xO2eo7pbDVw/ Mp7zVw0PHgAJ
  32. 32. Rackに関して 自前ハンドラを作る場合 require "http/server" class HogeHandler < HTTP::Handler def call(request) response = call_next(request) #次の階層に渡す # 処理 response end end
  33. 33. Rackに関して handlers = [ Frost::Server::LogHandler.new, Frost::Server::HttpsEverywhereHandler.new(308), HTTP::DeflateHandler.new, Frost::Server::PublicFileHandler.new(File.join(Frost.root, "public")) ] dispatcher = FrostSample::Dispatcher.new server = HTTP::Server.new(host, port, handlers) do ¦request¦ dispatcher.call(request) end ./#{appname}.cr
  34. 34. まとめ • 少しでも変わった使い方したらエラー • バグを見つけたら俺が直す、ぐらいの勢いが必要 • ただし全体的な枠組みは出来つつある • それでも • 普通にWebApp作りたい場合はどうする?
  35. 35. Kemalはいいぞ

×