スリ飯屋MaLankaのフリーエンジニアな日々

このブログでは、フリーランス5期目となる自身の実体験から、フリーランスエンジニアになるためのノウハウ、ブログや沖縄移住、スリランカの最新情報について発信します。

技術関連

【Vue.js BootstrapVue】methodsでmodalをopen、closeする

開く this.$bvModal.hide(modalのid) 閉じる this.$bvModal.show(modalのid) bootstrap-vue-modalリファレンス 1、modalを開くボタンと、開閉したいmodalを作成 // some_component.vue // ボタン ログイン // 開閉したいmodal // modalの中身 2、引数で指定…

【Rspec Capybara】confirmダイアログが2回表示されるsystem specを書く

やり方 単純にダイアログの回数分、 accept_confirm をネストすればOK。 # 1回目のダイアログ page.accept_confirm do # 2回目のダイアログ page.accept_confirm do # ダイアログが全てOKなら実施したい何らかの処理 first('div[data-cell="del"]>div>form>b…

【Vue.js】methodsやcomputedを共通化(mixin)する

1、共通化したいmethodsやcomputed等を記述したファイルを作成する。 例として utils.js を作成します。 パスは javascript/packs/mixins/utils.js とします。 以下は、moment.jsで日時をparseする関数です。 # utils.js import moment from 'moment' expor…

【Rails】論理削除を有効にする方法【paranoia discard】

paranoiaのREAD.MEで、 paranoiaは非推奨になった旨が追記されています。 今後は 「discard」 を使うようにしましょう。 1、paranoiaというgemをインストール 2、モデルにdeleted_atというカラムを追加する 3、active_record.rbにacts_as_paranoiaと追記…

【ActiveAdmin】formのcheck_boxで、dialogやalertの代わりに注釈(hint)をつける

ActiveAdminで管理画面を作っていて、 「非エンジニアのサポートチームの人が使うから、チェックボックスにはダイアログかアラート出したいな...」 と思い、 「chack_boxをON、OFFしたらdialogかalertを出すオプション」 的なものを探していたのですが、 che…

【ActiveAdmin】has_many + nested_attributes_for + allow_destroyなassociation_formで生成される削除ボタンをカスタマイズする

「allow_destroy: true」 を使わず、 f.inputのname属性に 「:_destroy」 を指定すればOKです。 例 form do |f| f.inputs 'Contract' do # 親モデル Contract end # 子モデル Option f.has_many :options, do |o| # allow_destroy: trueは不要 o.input :_des…

【ActiveAdmin】デフォルトのcreateとupdateの処理をカスタマイズしたい

controller do〜endブロックの中で、 createなりupdateメソッドをオーバーライドすればOKです。 オーバーライドする際は、 リダイレクトの処理も書いてあげる必要があります。 ちなみに、 createもupdateも、 デフォルトのリダイレクト先は「showアクション…

【ActiveAdmin】select_boxで表示するcollectionのscopeを指定したい

結論 collectionオプションを使います。 collectionの引数に、 scopeを渡してあげればOKです。 例 f.inputs for: [:plan, f.object.plan || Plan.new] do |p| p.input :name, as: :select, collection: Plan.all.map(&:name) # Planモデルの全nameをセレクト…

【ActiveAdmin】formで、belongs_toなmodelのstrong_parameterを指定する

permit_paramsに、 子モデルの「名称」と「属性」を指定すればOKです。 例えば、 下記のようなモデルがあるとします。 # 親 class Plan attribute :name attribute :price has_many :contracts end # 子 class Contract belongs_to :plan end この場合、 Act…

【ActiveAdmin】フォームのタイトル(パネル)部分を色付けする

panel do〜endブロックの中に、 f.inputを入れてあげればOKです。 form do |f| panel '次月プラン' do f.input :name f.input :id end end するとこんな感じになります。 f:id:mah666hhh:20201107111535p:plain nameのラベルは、 I18nで翻訳が当たっているの…

【ActiveAdmin】ヘッダー下のデフォルト作成ボタンを非表示にする

config.clear_action_items! の1行を追加すればOKです。 ActiveAdmin.register Item do # これを追加 config.clear_action_items! end これで、 ヘッダータイトルの作成ボタンが非表示になりました。 f:id:mah666hhh:20201107092354p:plain clear_action_ite…

RSpecで、Base64エンコードされた画像ファイルをテストする

こんにちは、mah(@RailsRubyMah6h)です。 今回は、 RSpecでBase64エンコードされた画像ファイルをテストする です。 1、 テストに使う画像ファイルを、Base64でエンコードしたバイナリ文字列に変換する (下記のようなサイトを使うとラクです) https://lab.sy…

Rubyで画像ファイルの形式(gif, png, jpg)を判定する

こんにちは、mah(@RailsRubyMah6h)です。 今回は、 画像ファイルの形式をバリデーションする必要があったので、 備忘録として残しておきます。 今回の例では、 Base64でエンコードされた、画像のバイナリ文字列 が渡ってくることを想定します。 ファイル名の…

【2023年1月最新】プログラミング初心者向け、AWSで挫折しない4つの勉強法

1. Raise Tech(レイズテック)【AWSを学べる、唯一のプログラミングスクール】 AWSフルコース AWS自動化コース 2. 【Udemy】これだけでOK! AWS 認定ソリューションアーキテクトアソシエイト試験突破講座(初心者向け22時間完全コース) 3. 【Udemy】AWS …

【udemy】AWS認定ソリューションアーキテクト アソシエイト試験突破講座(初心者向け22時間完全コース)がおすすめ過ぎる

AWSフルコースは、 今話題のクラウドサービスで、 トップシェアを誇るAWSを、 現場で通用するレベルまで学習出来るコースです。 クラウド化の流れにより、 インフラ構築やクラウド移行の案件が増加している中、 AWSは採用実績が豊富にあります。

【Rails6】gem toastr-railsを導入できない【ReferenceError: toastr is not defined】

## 【Rails6】gem toastr-railsを導入できない【ReferenceError: toastr is not defined】 出ているエラー ReferenceError: toastr is not defined 結論 下記の記事の手順通りにやると、toastr-railsを入れられました。 medium.com 起きていたこと 公式ドキ…

【Ruby on Jets】Model.newに渡したパラメータが反映されず、valid?でfalseが返される時の対処法

trsの戻り値を見て「...まさか」と思ったのが、 attrsの戻り値のキーが、 文字列のキー だということ。 # キーが文字列 irb(main):004:0> a.attrs => {"id"=>"123", "title"=>"テスト", "link"=>"http://example.com", "published_at"=>"2020-03-29"}

【Ruby on Jets】include ActiveModel::ValidationsがNameError: uninitialized constantエラーになる時の対処法

ActiveModel がまだ読みこまれていない段階で、 ActiveModel::Validations を読み込もうとしていたということ。 なので、class定義の前に、 明示的に active_model を読み込みさせれば良い、 ということと解釈。

【Ruby on Jets】dynamodb-localを実行した時に、javaのバージョンが古くてエラー発生。Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/logging/log4j/spi/ExtendedLogger : Unsupported major.minor version 52.0

javaのバージョンを上げれば解決しそう。 javaのバージョンを確認。 $ javac -version javac 1.6.0_65

【Rails Jets】.envファイル内で、別の環境変数を参照する方法

${} で囲めばOKです。 ${HOGEHOGE} みたいにすれば、 ファイル内の別の環境変数を参照できます。 CHROME_DRIVER_EXECUTE_PATH という環境変数の中で、 GEM_PATH という環境変数を参照して使いたい** というケースを想定。 .envファイルに、下記の様に書けばO…

Googleタグマネージャーのイベントが、アナリティクスに反映されない原因

タグマネージャーのトリガーの設定で、 全てのクリック を選択すれば良いだけでした... 全てのクリックに変更すると、プレビューモードでイベントが発火し、アナリティクスにもリアルタイムで反映されるようになりました。

【必見】Railsアプリでadsenseの自動広告が表示されない時の5つの確認事項

1. 自動広告はオンになっているか 2. Corsの設定をしたか 3. きちんとheadタグ内にコードを貼っているか 4. Adsenseサイト申請時のコードが残っていないか 5. コードを貼り付けてから1、2日間は経過しているか

【Ruby】aタグのhref属性を書き換えて、target="_blank"も付与する方法【gsub】

gsubを使って書き換えます。 "About" 上記のようなaタグを、 "About" のように書き換える例です。

【Rails】aタグからhref属性の値を正規表現で抽出する方法

href\s=\s"([^"]*)" という正規表現を使うことで実現可能です。 このstack over flowの回答がドンピシャでした。 > You should be able to use a regular expression like this: > href\s*=\s*"([^"]*)" See this Rubular example of that expression. > The…

【Ruby Selenium】wait.untilブロックでTimeoutしたら外側にraiseされる

Selenium::WebDriver::Error::TimeoutErrorは、 直下のrescueで補足される と思っていたが、そうではなかった。 これに気づくのにめちゃくちゃ時間がかかりました笑 調べていくと、 wait.untilブロックの外側 にraiseされていました...

【Rails】開発環境のデータを本番環境(heroku)へ移動【seed_dump】

seed_dump というgemを使うとサクッと実現出来ます。 このgemは簡単にいうと、 DBのデータをseedファイルに超楽チンに書き出せるgem です。 本番環境の商品データを、 定期バッチでスクレイピングして貯めていこうかと思っていました。 が、スクレイピングは…

【Ruby】Seleniumでエラー Other element would receive the click の解決方法

2通りの解決方法がありました。 上に被っている要素を、閉じるなり移動させる clickではなくsubmitを使う submitの方が手っ取り早かったので、自分はsubmitで対応しました。

【Ruby スクレイピング】Seleniumで要素が空かどうか判定する

キーワードに一致する商品が見つからない場合、 "該当する商品が見つかりませんでした" というテキストが表示されます。 なのでそれを判定条件にしました。 下記、サンプルコードです。 # ヘッドレス(ブラウザを立ち上げない)で動かすためのオプションを生成…

【Rails heroku】ActiveRecord::AttributeMethods::Serialization::ColumnNotSerializableError

postgreSQL(herokuのデフォルトのDBはpostgreSQL) では、モデルのserializeメソッドが使えない ようです。 ActiveRecord::AttributeMethods::Serialization::ColumnNotSerializableError (Column `tags` of type ActiveRecord::ConnectionAdapters::PostgreS…

【Rails】DBに紐つかない属性(カラム)をモデルに追加する

Railsの標準機能である attribute API を使います。 attribute :virtual_tags, type: Array virtual_tagsという属性 に 配列の値 を保持させることが出来るようになります。 もし、typeを指定しない場合は、設定した値のclassで、値が設定されます。