Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@jacoyutorius

AWS SAM CLI + Ruby のローカル開発時にホットリローディングされない件

More than 1 year has passed since last update.

aws-sam-cliでLambda上で動かすRubyスクリプトを書いていたのだけど、sam local start-apiを実行したときにホットリローディングが効かなくてしばらくハマっていたのでした。

原因はsam build

sam buildをしていたことで.aws-sam配下にパッケージされたLambdaファンクション一式ができあがるのだけど、
これがある状態でsam local start-apiするとこちらが優先して参照されてしまうらしい。

.aws-sam
└── build
    ├── HelloWorldFunction
    │   ├── Gemfile
    │   ├── Gemfile.lock
    │   ├── app.rb
    │   └── vendor
    │       └── bundle
    └── template.yaml

ファンクションごとのgemのインストールパスについて

なぜsam buildしたかというと、start-apiしたときにgemが見つからないってエラーが発生したため。
こんな感じで。

{
  "errorType": "Init\u003cLoadError\u003e",
  "errorMessage": "cannot load such file -- httparty",
  "stackTrace": [
  ~
}

開発時には以下のようにvendor/bundle配下を指定してgem installする。
(自分はいつも.bundleにインストールする派だったのでここでも少しハマった)

$ bundle install --path hello_world/vendor/bundle

複数のLambdaファンクションを作成する場合は--gemfileオプションを付けたほうが良いかも。
--gemfileオプションを付ける場合、--pathで指定するインストールディレクトリは--gemfileで指定したGemfileを起点としたパスになる(さっき気づいた)ので以下のようになる。

$ bundle install --path vendor/bundle --gemfile hello_world/Gemfile

こうなる。

.
├── Gemfile
├── Gemfile.lock
├── README.md
├── hello_world
│   ├── Gemfile
│   ├── Gemfile.lock
│   └── app.rb
│   └── vendor
│       └── bundle
├── template.yaml
└── tests

まとめ

ざざっと調べた程度ですが公式のドキュメントやStack Overflow等でもAWS SAM + Ruby の情報はまだ少ない様子。
今回の教訓は以下のとおりです。

  • sam buildはデプロイ時に
  • gem は vendor/bundleに置く
0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
jacoyutorius
Software/Server developer at AIRS. Ruby / AWS / Vue

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?