Sinatra is a DSL for quickly creating web-applications in Ruby with minimal effort:
# myapp.rb require 'rubygems' require 'sinatra' get '/' do 'Hello world!' end
Install the gem and run with:
sudo gem install sinatra ruby myapp.rb
Sinatraプロジェクトで更新しようとしたら以下のエラーがでた。 ~/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/activesupport-7.1.1/lib/active_support/core_ext/array/conversions.rb:108:in `<class:Array>': undefined method `deprecator' for ActiveSupport:Module (NoMethodError) deprecate to_default_s: :to_s, deprecator: ActiveSupp…
主に個人向けで作っているサービスでLogin with Notionを実装する必要があったので、その時の動作検証を行った時の作業ログです。 Login with Notionと仰々しく言っていますが、端的に言えばNotionと連携するためにOAuthを利用するだけの話です。 Public Integrationを作成する Notion公式ドキュメントに従って、Public Integrationを作成します。 developers.notion.com 今回の動作検証時のIntegrationの設定は、以下のようになっています。 適当と書いてあるところは適当に値を設定しています。 Basic …
何年も前に社内向けにシンプルなアプリをRailsで作っていたのだけれど、長いことメンテナンスできずにいた。 Rubyのバージョンも古いし、Railsのバージョンも古かったので、バージョンアップをしないとなぁと思っていたのだけれど、やったところでまた数年後に同じ思いをすることになりそうだなぁ…と思ったので、もっとバージョンアップのしやすいSinatraに書き換えることにした。 実はSinatraを試したことくらいはあったけれど、ちゃんとデプロイまでしたことはなかったので、よい経験になった。 作ったもの シンプルなWebAPIを作った。JSONを返すだけ。 使ったgem sinatra 言わずもが…
railsを学ぶ前身として、railsほど複雑ではなくrailsより処理が軽い「Sinatra」を学習しました。「Sinatraでデータベース連携をしたwebページを立ち上げる手順」をまとめました。 前提 データベース: SQLITE OS: mac 手順1. sinatra用のディレクトリを作成し、必要ライブラリを入れる。 bundle initで、Gemfileを入れる。 bundle init 入れたGemfileに、以下の項目を追記して、必要ライブラリを入れる。 # frozen_string_literal: true source "https://rubygems.org" gi…
この記事は ANDPAD Advent Calendar 2022の 20 日目の記事です。 こんにちは、アンドパッドに今年の 9 月に入社しました、 田上(shuntagami)です。アンドパッドでは図面チームに所属していて、主にサーバーサイドを担当しています。Ruby と Rails を使うことが多く、Go や TypeScript を書くこともあります。 本記事の概要 以下のようなケース 将来的に規模が大きくなることも想定されるアプリケーションの API サーバーを 0 から開発する際のメインフレームワークとして 既存の大きく成長した Rails アプリケーションの一部をマイクロサービス…
Sinatraを使ってWebアプリケーションを作成した フィヨルドブートキャンプの課題でSinatraを使ってメモアプリを開発しました。 いきなりRuby on Railsの学習に入るよりもシンプルなフレームワークであるSinatraでルーティングや画面描画の仕組みを学んだことで、処理の流れが具体的にイメージできるようになったと思います。 Sinatraとは? SinatraのREADMEには以下の説明があります。 Sinatraは最小の労力でRubyによるWebアプリケーションを手早く作るためのDSLです。 ん・・・どういうこと? DSLとは? を読んでみると以下の説明があります。 DSL(…
少しずつerbファイルの書き方がわかってきた😅どうやら、<% %>で括った部分がruby コードと判定され、変数については<%= %>で括ってあげると認識されるっぽい。 それ以外の部分についてはhtmlとして扱われる。 例えば、下にerbのコード例を示す。 <% require './myapp.rb' %> <h2><div><%= @content %></div></h2> <div class="memo"> <ul> <% get_memo_num.times do |i| %> <% memo_info = open_memo_detail(i+1) %> <li><a href=…
Sinatraのサーバ部分はruby、Webページはhtmlというハイブリッド型?🤔 Sinatraの構成にまだ慣れていなくて、『どう書けばいいねん😵💫』て感じでしたが、とりあえず手を動かしてみるとだんだん見えてきました😅 自分の感覚的には、『サーバっぽい部分をrubyで処理してあげて、ブラウザ上に表示されるWebページ部分はhtmlで描画する』という印象を受けました。 例えば、GETメソッドの流れを見てみると、次のような流れになっている。 さらにPOSTメソッドについても見てみた。POSTメソッドはPRGパターンを意識して、一度リダイレクトをクライアントに返して、GETメソッドでコンテンツ…
実行環境 sinatra 2.1.0 問題 layoutを2重でネストさせたい 解決策 erb :"内側のlayout", :layout => :"外側のlayout" do erb :user(対象のview) end ↑これでいけるわ sinatraのREADME最強! 参考にしたサイト sinatrarb.com
sinatra % bundle exec ruby app.rb/Users/myMBP/work/FJORD/sinatra/vendor/bundle/ruby/3.0.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1755:in `detect_rack_handler': Server handler (thin,puma,reel,HTTP,webrick) not found. (RuntimeError) from /Users/myMBP/work/FJORD/sinatra/vendor/bundle/ruby/3.0.0/gems/si…
7:00-11:00 RADIANT MORNING (しもぐち☆雅充) 中山美穂 / 色・ホワイトブレンド 太田裕美 / たんぽぽ 松任谷由実 / ダンデライオン~遅咲きのたんぽぽ BUMP OF CHICKEN / ダンデライオン 少年隊 / 春風にイイネ! BEGIN / 島人ぬ宝 渡辺美里 / My Revolution 大江千里 / STELLA'S COUGH (Class of '88 Version) SINGER SONGER / 初花凛々 布施明 / 君は薔薇より美しい くるり / ばらの花 RED WARRIORS / バラとワイン 長渕剛 / JEEP 小沢健二 / カ…
人生は変えていける。私は選び取ることができる。この言葉から始まる歌と、その詩を書き、そして歌う人たちを信じたいというのが第一。ほんとMVを開き第一小節目の音から良すぎて思わず口の端上がっちゃった。その直後小雪さんの声にさらに上がる口角。 www.youtube.com 환상들은 fake, 현실은 달라ね。なんかこの歳になって一層あるのは自分の生活だけで、他はどうでもよくなったというか、運動して本を読み映画観て住居を清潔に保ちたまにプール行って山に登って食べたいものを作ってそして寝る。ただこの毎日を積み重ねたい。住んでいる街も家も大好きだからあとは本当に仕事だけどうにかすれば人生に望む全てなの…
7:00-10:00 MORNING SPRITE (秋田美幸) Natalie Imbruglia / Satellite Cracker / White Riot 荒井由実 / 花紀行 Norah Jones / Running Gipsy Kings / Soy Aztec Camera / Oblivious 中森明菜 / DESIRE -情熱- Starship / We Built This City Starship / Sara Astrud Gilberto / Só Tinha De Ser Com Você SEKAI NO OWARI / タイムマシン Elvis Co…
勉強全体像 勉強計画 5ヶ月でチーム開発完了 工夫しすぎないで、最小限で提出(歓迎要件は無視やるなら後で) 4/15~5/15 lsコマンドを作る1 lsコマンドを作る2 lsコマンドを作る3 lsコマンドを作る4 ls コマンドを作る5 wc コマンドを作る Nginx nginx で SSL 対応サイトを作る データベース SQL の基本を理解する PostgreSQLの基本を理解する データベース設計の基本を理解する Webアプリケーション REST の考え方を理解する Sinatra を使ってWebアプリケーションの基本を理解する WebアプリからのDB利用 5/16~6/15 Rub…
「最後に事件を解決したのって?」「いつもしてるよ。 新聞に載らなくなっただけで」 『私立探偵 エイブ 折り紙殺人事件』 "The Kid Detective" アダム・ブロディ,ソフィー・ネリッセ 2020/エヴァン・モーガン 栄光の時代が 過ぎ去った サエない探偵に 舞い込んだ ある事件のお話。 www.youtube.com かつては 少年探偵として 大小さまざまな事件を解決し 町の人気者だったエイブ。 どこに行っても歓迎される 充実した毎日を送っていた。 しかし 市長の娘であり エイブの秘書でもある グレイシーが誘拐されたとき 手も足も出なかった彼は それ以来、 光を失ってしまった。 時…
おはようございます。 7時起床、早起き成功。トースト。 深夜にVampire Weekend『Only God Was Above Us』を聴いた。Vampire Weekendは名前だけ知っていたものの今回がファーストコンタクトだった。Lo-Fiに加工された遠い音の層とか細く美しいボーカルワーク、キレがありながら柔らかいアコースティックサウンドの輪郭は重なり合い、西洋のどこかにある知り得ない原風景を思い起こさせてくれる。キラキラノスタルジー! ちょっと前に小難しい本の影響でバッハの『平均律クラヴィーア曲集』を聴いていてそれはもうバッハの耳だったので、M4《Connect》のピアノが耳に入るや…
こんにちは。SREのkyontanです。Rubyが大好きなのでRubyの話をします。ちなみにリクルートはRubyKaigi 2024へGold Sponsorとして協賛しています! *1。ぜひ沖縄でお会いしましょう。 これはあるアプリケーションのメモリ消費量を示すグラフなのですが、まさかgemを入れ替えるだけでこんなに嬉しい変化が見られるとは思っていませんでした。今日はそんなgemの話をします。 話は遡って2023年4月のある日、インターネットを眺めていたところ、ShopifyがpitchforkというOSSを公開したという情報が目に留まりました。 調べてみると、どうやら著名なRackサーバー…
こんにちは、マネージドサービス大城です。 ISUCON過去問の環境に、Ruby、Python、phpのNew Relic APMを入れてみました。当ブログでは下の内容を書きます。 AWSにオールインワン環境準備 New Relic APM インストール ベンチマークツールを実行 New Relicにデータが来ていること確認 実際にNew Relic画面をみて、ボトルネックを特定する作業は当ブログでは書きません。またの機会に書きたいと思います。 ISUCONとは 前準備 AWSにオールインワン環境準備 利用するAMI AMIを起動する EC2にsshする MySQLに初期データを入れる アプリに…
こんばんは。キタダハルキです。 昨日は謎のブルガリア料理「ヤイツァ・ポ・パナギュルスキ」を作っていたんですが…皆様はいかがお過ごしでしょうか。 さて、それでは今日のTSUTAYA DISCAS日記、やっていきたいと思います。 ※前回の記事はこちら。 musictherapy.hateblo.jp 今日のテーマは…「流れの流麗さは健在、一方で…」。 それではレビューしていきたいと思います。
ユーザー側からの入力を簡易プログラミング言語みたいにしたいと思うことがたまにあったので、DSLの作成方法を聞いてみました。 Rubyの場合は、特定のオブジェクトをレシーバーとしつつ、そのオブジェクトのコンテキストでブロック内のコードを実行させるinstamce_evalを使うことが、この手法の肝になりそうです。 ユーザーに実行して欲しくないコードを実行できないようにするには、method_missingが呼ばれたときに、そのメソッドが予め定義したホワイトリストに入っていないときはブロックを実行しないようにすることで実現できます。 長年知りたかったことが分かってすっきりしました。 Kotlinの…
Ruby on RailsのAntiveRecordみたいなORMを、日常的な用途でも使いたいと思い、ChatGPTに聞いてみました。 Sequelが良さそう。 Ruby on RailsのActiveRecordって、Ruby on Railsの環境以外でも使えるのですか? Rubyで使えるORMライブラリで定番のものは他にもありますか? それぞれのライブラリの歴史を教えてください。 日常的な用途でORMを用いる場合、おすすめなのはどれですか? 利用者数や入手可能なドキュメントの豊富さで比較するとどうなりますか? Sinatraで使うなら、Sequelが良さそうですね。 Ruby on Ra…
7:00-11:00 RADIANT MORNING (しもぐち☆雅充) 松山千春 / 旅立ち 松田聖子 / 旅立ちはフリージア Mr.Children / 旅立ちの唄 オフコース / さよなら B'z / Easy Come, Easy Go! 岡本真夜 / 明日へ 玉置浩二 / メロディー たま / さよなら人類 GAO / サヨナラ ゆず / サヨナラバス 花*花 / さよなら 大好きな人 山口百恵 / さよならの向う側 小比類巻かほる / Hold On Me 小比類巻かほる / Never Say Good-Bye 小比類巻かほる / DREAMER 小比類巻かほる / TOGETH…
開発中のソースコードは、コンテナ内のファイルシステムに置くのではなく、ホストシステムのディレクトリで行うのが通常だそうです。 開発中は、「ボリュームマウンティング」という方法を用いて、そのファイルをコンテナ内の特定ディレクトリに反映させて実行させることになるそうです。 ウェブサーバーのポートも同様に、「ポートフォワーディング」という手法で、ホストシステムのポートをコンテナのポートに結びつけて実行するとのこと。 例: docker run -p 4567:4567 -v $(pwd):/app sinatra-app コンテナは、ホストシステムとは異なる「島」のようなものということのようです。 …
5行書くだけでWebサーバーが出来ます。 'Ruby on Rails'の学習もしたことがありますが、正直ややこし過ぎて、1冊本を読み終えた頃には個人用途でアプリケーションを作る気力は失せていました。 単純なものから必要に応じて規模を拡大して行く方が、学習はスムーズに進むかもしれません。 User RubyのSinatraで構築するWebサーバーで次の条件を満たすものを構築したいです。 ・ローカルネットワーク上の他端末からアクセスができる ・デフォルトのviews, publicフォルダを持つ。 ChatGPT Sinatraでローカルネットワーク上の他端末からアクセス可能なWebサーバーを構…
長年知りたかったことが解決しました。 Android上で動くLinuxエミュレータのTermuxを使っているのですが、これで古いAndroid端末をWebサーバーにして、他の端末からデータにアクセスしたり変更したりといったことが出来そうです。 ifconfigのようなコマンドで自身の端末に割り当てられたIPアドレスを調べるとか、職業訓練でしたことがありますが、すっかり忘れていました。 Sinatraで、localhost:9292からWebサーバーにアクセスできるようになりました。これを他の端末のブラウザからもアクセス出来るようにしたいのですが、どうすれば良いですか? AndroidのTerm…