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…
ユーザー側からの入力を簡易プログラミング言語みたいにしたいと思うことがたまにあったので、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…
Ruby, SinatraでのWebアプリ開発が非常に楽なのに気付き、ChatGPTにいろいろ聞いています。Ruby on Railsは大規模で、複雑過ぎて、個人用途で何かを作る気には到底なれなかったのです。 今回は主に、ファイルの置き場所など。パスの読み替えが行われるのはviewsとpublicのみ、erbテンプレートはviewsに、画像やCSS, Javascriptなどはpublicフォルダに置くのが一般的なようです。 それぞれのフレームワークの歴史も後半で聞きましたが、Ruby on Rails(2004年)よりも、Sinatraの方が後発(2008年リリース)なのですね。 Ruby,…
7:00-10:00 MORNING SPRITE (秋田美幸) Susan Boyle / Memory 菊池桃子 / 卒業-GRADUATION- Bobby Caldwell / Sukiyaki (Forever) Kiroro / 花は咲く RADWIMPS / 白日 -10 years ver.- Girl In Red / Too Much Billie Eilish / What Was I Made For? Ryan Gosling / I'm Just Ken Bobby McFerrin / Don't Worry, Be Happy Jon Batiste / It …
2023年11~12月 舞台OUT OF ORDER 感想 ※観ながらメモは取らない為、動きやセリフなどの表現はニュアンスで書いてます。感想と妄想のごちゃ混ぜメモです。予めご了承ください。 youtu.be 公式サイト OUT OF ORDER 公式から権利の関係で映像化無しとアナウンスされている作品の感想を、自分のかすかな記憶のみであっても詳しく書くことに対して少し不安もありますが、ここまで公開してしまっている為、このまま公開しておきます。 アフターパンフレットに掲載されている沢山の素晴らしい場面ショットを見るたびに、思い出し本気笑いと感動に浸れます。映像化されないからこそ、劇場で購入したパ…
どうもShinShaです。不定期にお届けするジャズ・スタンダードをご紹介する記事です。今回のテーマは、「フライ・ミー・トゥ・ザ・ムーン」。 「月に飛んで行かせて」恋する女性の気持ちを歌った可愛い歌詞です。今回は女性ボーカルを2曲、大好きなアストラッド・ジルベルトの曲も選びました。そして、このスタンダードにはフランク・シナトラの大名曲もあります。 この曲はボーカルがメインだと思いましたが、調べてみたら良いインスト曲がありました。ウェス・モンゴメリーと渡辺香津実、ギターがメインの曲を2つ選びました。これがぜんぜん違うんだな。ぜひ、聴いてみてください。 「フライ・ミー・トゥ・ザ・ムーン」 “Fly …
「さぁ紳士淑女のみなさん、 じゃんじゃん賭けて! 勝つのは一人だ!」 『オーシャンズ 13』 "Ocean's Thirteen" ジョージ・クルーニー,ブラッド・ピット,マット・デイモン,アンディ・ガルシア,ドン・チードル,アル・パチーノ 2007/スティーヴン・ソダーバーグ オーシャンたちが 仲間のために ひと肌脱ぐお話。 2001年の 『オーシャンズ11』 zuzz.hatenablog.com 2004年の 『オーシャンズ12』 www.youtube.com zuzz.hatenablog.com に続く第3作目です。 カジノホテル経営の パートナーだった男に 手ひどく裏切られ、 シ…
はじめに 前提 Ruby on RailsのAPIモードとは なぜAPIモードが存在するのか JSON APIにRailsを使う理由 API専用Railsアプリケーションを新規で作成する場合 API専用Railsアプリケーションの生成 新しいリソースの作成 データベースのマイグレーション コントローラーの確認と修正 データを確認する 既存のRailsアプリケーションをAPI専用アプリケーションに変更する方法 APIモードの設定 開発モードでのエラー表示の設定 ApplicationControllerの継承先の変更 RailsでAPIモードと通常のモードを混在する方法 API専用のコントローラ…
Frank SinatraのMy Wayという曲をご存じですか? 多くの人にカバーされ、Elvis Presleyや、Sid Vicious、日本では、布施明さんの日本語バージョンも有名ですね。 私は今、この曲をピアノで弾いているのですが、「演奏がAIみたいだ」と指摘されてしまいました(苦笑)。で、勉強のため、この歌について少し考えてみました。 まず、私のMy Wayのイメージですが、「自己肯定」、「壮大すぎる歌」、「カラオケで歌自慢のおじさんが歌う歌」です。それに加えて、「門出の歌」というイメージもあります。中学の音楽の教科書に載っており、私が中2のときに、卒業生に贈る歌として、卒業式で歌い…
JavaScriptとRubyの連携: よくあるミスとエラー解消方法 JavaScriptとRubyの連携は、ウェブアプリケーションやサーバーサイド開発において重要です。しかし、この連携にはいくつかのミスやエラーが発生する可能性があります。本記事では、そのよくあるミスとエラー解消方法について解説します。 1. JavaScriptからRubyへのデータの送信 JavaScriptからRubyへのデータの送信には、主にAjaxリクエストやフォームの送信を使用します。以下は、Ajaxリクエストを使用してJavaScriptからRubyにデータを送信する方法の例です。 // JavaScriptから…
どうもShinShaです。今回はジャズスタンダードの記事です。もうすぐバレンタイン・ディですね。今回のスタンダードは「マイ ファニー バレンタイン」。 「マイ・ファニー・バレンタイン」は1937年にミュージカルのために作られました。曲のタイトルの“バレンタイン”は歌の主人公である女性が熱を上げている男性の名前です。この曲は1950年代からずっと、ジャズファンやミュージシャンに愛されてきたスタンダードです。 「マイ・ファニー・バレンタイン」の名演には、マイルス・デイヴィスやスタン・ゲッツの演奏があります。ボーカル曲としてはシナトラや永遠の名曲チェット・ベイカーの1954年録音が特に有名です。今回…