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使っているとfaviconを置くのを忘れがちというところがあるのは私だけ? というかAPIサーバなのでfavicon要らんねんけど…。というときに使える小ネタを知ったのでメモとして記しておく。 # app.rb before '/favicon.ico' do halt 204 end これでルーティングエラーログや404のログも出なくなるのでよい👍
前回、Lambda Web Adapterを使ってSinatraアプリをAWS Lambdaで動かす話をしました。 patorash.hatenablog.com 今回は、Lambda Web Adapterを使っているコンテナでサーバーレスでタスクを実行する方法についてです。 タスクはrake taskを実行すればいいんでしょ? はい。私も最初はそう思っておりました…。そのため、新たにLambdaを作って、同じDocker Imageを使うようにして、DockerのCMDを上書きしてrake taskを実行するようにしてみました。そしてLambda関数の詳細画面のテストタブから、テストを実施…
Railsで運用されていたアプリをSinatraで実装し直した上でサーバーレスで動かしたかったのでやってみました。 こちらのRailsアプリも長いことメンテされておらず、RubyのバージョンもRailsのバージョンも古すぎた…。 作ったもの シンプルなWebAPIを作った(Rails + PostgreSQL → Sinatra + DynamoDB) 構成 サーバーレスで動かすのを大前提としていたので、API Gateway + Lambda + DynamoDBで考えてました。 なんかうっすらLambdaでsinatra動かしてみた、みたいな記事を見たことがあった記憶があったので、まぁでき…
gemとは? 定義:Rubyプログラミング言語で使われるパッケージマネージャで、Ruby用のライブラリやプログラムを配布、管理するシステム。 用途:開発者がRubyのコードを簡単に共有、インストール、バージョン管理できるようにする。 使用方法:コマンドラインを使用して、「gem install [gem名]」のようにインストールします。 sinatraで使うgemはひたすらgem ほにゃらら=>bundle installを繰り返してました。 インストール:gem install railsでRailsフレームワークをインストール。 アップデート:gem updateでインストールされているす…
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(…