Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

25 240 vues

Publié le

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

Publié dans : Internet
  • Writing good research paper is quite easy and very difficult simultaneously. It depends on the individual skill set also. You can get help from research paper writing. Check out, please ⇒ www.HelpWriting.net ⇐
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Dating direct: ❶❶❶ http://bit.ly/2F7hN3u ❶❶❶
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Follow the link, new dating source: ❶❶❶ http://bit.ly/2F7hN3u ❶❶❶
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

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はいいぞ

×