もう1週間も経ってますが、RubyKaigiに行っていました。
続きを読むrailsにslimを導入するためにしたこと
railsのviewをslimで書くためにやったこと。
slim-railsの導入
Gemfileにslimを入れてbundle install。既存のerbを変換するためにhtml2slimも同時に入れる。
gem 'slim-rails' group :development do gem 'html2slim' end
erb2slimを実行しようとしたが…
既存のerbをslimにしようとerb2slim
を実行したが、erb内で日本語文字を使用していたためエラー。
invalid byte sequence in US-ASCII (ArgumentError)
変換のときだけ日本語文字を省いてもいいが、同様の問題は今後も発生する可能性があるのでなるべくソース内に日本語文字を直書きしないようにするべくI18nを導入*1
I18nを導入
Gemを追加。
gem 'rails-i18n'
confg/application.rbでデフォルトのlocaleを指定。
config.i18n.default_locale = :ja
config/locale配下にymlを配置(view.ja.yml)
ja: users: index: name: 氏名
erb内からymlで指定した表記を呼び出す。
<%= I18n.t('.users.index.name') %> #=> 氏名
erb2slimを再実行
改めてerbをslimに変換する。-d
オプションは変換後に元のerbを削除するオプション。
bundle exec erb2slim app/views -d
変換後、上記のerb部分もきちんと変換された。
= I18n.t('.users.index.name')
まとめ
単にslimを入れるだけのはずがなぜか結構大仕事になっていた。 仕事で使ってるプロジェクトが、日本語しか使わないのにI18n使っててなんでなのかなぁと思ったけどこういう理由もあったりしたのかな。わからん。。。
*1:本来の目的ではないが勉強も兼ねて
rbenvで最新版のrubyがインストール出来ないとき
rbenvで最新版のrubyをインストールしようとした
rbenv install 2.6.1 && rbenv global 2.6.1
すると、エラーが出た。
ruby-build: definition not found: 2.6.1 See all available versions with `rbenv install --list'. If the version you need is missing, try upgrading ruby-build: brew update && brew upgrade ruby-build
「2.6.1なんてねーよ」というエラー。
メッセージの通りrbenv install --list
を実行してもリストに2.6.1がない。
なので、その下のメッセージに沿ってruby-buildをupdateする。
brew update && brew upgrade ruby-build
アップデートが終わったら再度rbenv install --list
を確認して2.6.1があることを確認したので
あらためてインストールとバージョンの確認。
# 2.6.1をインストール rbenv install 2.6.1 && rbenv global 2.6.1 # 設定結果を確認 rbenv versions
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
Modelのアップデートでカラムを動的に変える
Railsの処理の中で、更新するカラムを動的に変えたい場合の書き方。
公式ドキュメント読んでもよくわからなかった(書いてなかった)のでメモ。
user
のhoge
もしくはmoge
のどっちかをfugaに更新したい場合、下記のように書く。
field = user.condition? ? :hoge : :moge user.update(field => 'fuga')
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/10
- メディア: 大型本
- この商品を含むブログ (3件) を見る
clasp事始め
claspのインストールからpushできるようになるまで
ドキュメント&公式リポジトリ
インストール
公式ドキュメントに沿ってインストールを試みる
sudo npm i @google/clasp -g
するといきなりエラーが出てつまづく
... npm ERR! code ENOENT npm ERR! errno -2 npm ERR! syscall rename npm ERR! enoent ENOENT: no such file or directory, ...
READMEの下の方にトラブルシューティングがあるのでそれを読む。
Node version >= 6.0.0.
とのことなので、トラブルシューティングに沿ってnodeのアップデートをする。
node -v # Check Node version sudo npm install n -g sudo n latest
アップデート後、再度インストールコマンドを実行することでclaspのインストールができた。
clasp -v > 1.7.0
プロジェクト作成
既存のGASプロジェクトと紐付けることもできるみたいだけどまずはclaspでプロジェクトを作成してみる
clasp create
作成するプロジェクトのタイプを選択させられるのでとりあえずstandalone
を選択。
するとまたエラー。
User has not enabled the Apps Script API. Enable it by visiting https://script.google.com/home/usersettings then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
AppsScriptAPIをオンにしろと言われているので指示に従ってhttps://script.google.com/home/usersettingsにアクセスしてAPIをオンにして再度プロジェクトを作成する。
.clasp.json
とappsscript.json
が作成された。
なぜかappsscript.json
のtimezoneが"America/New_York"
になっているがとりあえず気にしないことにする。
コードを書いて反映させる
この時点で既にGoogleドライブ上にGASプロジェクトは作られているみたい(?)
clasp pull
すると空のmyFunction
が入ったCode.js
がダウンロードされてくる。
とりあえずログを出せるように書いてpushしてみる。
function myFunction() { Logger.log("hoge") }
clasp open
するとブラウザでGASのエディタが開き、ローカルで書いたコードが反映されていることがわかる。
次の課題
clasp runできない問題
clasp run
してローカルで実行しようとしたら認証スコープ定義しろみたいなエラーが出て実行できなかった。
Error: Local client credentials unauthenticated. Check scopes/authorization.
Logger.logしか書いてないので認証するところないと思うんだけど(ブラウザのGASエディタでは認証ダイアログも開かず問題なく実行できた)
ES6で書けるようにする
とりあえずES6で適当に書いてpushしたら書いたものがそのまま上がってしまって実行できなかったので(GASはES6記法未対応)何らか変換する部分は自分で用意する必要があるっぽい。
現時点だとローカルでGit管理できるということ以外一切のメリットがないのでもう少し環境整備する必要がある。
とりあえず今日はここまで
Going GAS: From VBA to Google Apps Script (English Edition)
- 作者: Bruce Mcpherson
- 出版社/メーカー: O'Reilly Media
- 発売日: 2016/02/15
- メディア: Kindle版
- この商品を含むブログを見る