Software

Latest comments

WSL2上にてrails serverで立ち上げたサーバに別デバイスからのアクセスを可能にする方法

wakairo @wakairo
Last edited

背景

WindowsのWSL2環境でRailsアプリを開発しています。開発しているWebアプリに関してAppleのSafariブラウザでの動作確認が必要になりました。そこで、同一LAN内にあるiPhoneやiPadといった別デバイスから、WSL2環境においてrails serverコマンドで走らせたサーバへ、アクセスできるようにしました。

手順

LAN接続の設定

後述のファイアウォールの設定にて、プライベートネットワークに限定する設定をする場合には、Railsサーバを走らせているPCのLAN設定で、ネットワーク プロファイルをプライベートにしておきます。

WSL2で走っているLinuxのIPアドレスの確認

ifconfigの出力のinetのところなどで、WSL2で走っているUbuntuなどのLinux OS側のIPアドレスを確認し、転送先アドレスとして控えます。

LinuxのIPアドレスが正しいことの確認

まず、bin/rails server -b 0.0.0.0でWSL2上でRailsサーバを起動します。
次に、このRailsサーバに、WSL2環境ではなくWindows上で普通に走っているブラウザから、先ほど調べたWSL2で走っているLinuxのIPアドレスに対し http://(LinuxのIPアドレス):3000/ というようなアドレス(ここではポート番号を3000としていますが、別のポートをRailsサーバに用いている場合はそのポート番号に変更して下さい)でアクセス出来ることを確認します。
ここでアクセスに失敗するようでは何かしらが間違っていますので、まずはこのようにアクセス出来るようにしましょう。

ホストOSであるWindowsのIPアドレスの確認

ipconfigなどで、Windows側、つまり、ホストOS側のLAN上でのIPアドレスを確認し、転送元アドレスとして控えます。

ポートフォワーディングの設定

管理者権限で以下のコマンドを実行します。なお、特に理由が無ければ、転送元ポートは転送先ポートと同じ(3000)で大丈夫です。

netsh interface portproxy add v4tov4 listenaddress=<転送元(Windows)のIPアドレス> listenport=<転送元ポート> connectaddress=<転送先(Linux)のIPアドレス> connectport=<転送先ポート>
ファイアウォールの設定

Windowsのファイアウォールの設定にて、「受信の規則」として以下の設定を追加します。

  • プロトコルの種類:「TCP」
  • ローカルポート: 「特定のポート」「3000(転送元ポート)」
  • リモートポート: 「すべてのポート」

なお、ファイアウォールの設定にて、プライベートネットワークに限定したり、テスト時以外は無効にしたりするなど、セキュリティには十分に配慮をして下さい。

接続確認

同一LAN内の別デバイスから、 http://(WindowsのIPアドレス):(転送元ポート)/ というようなアドレスでアクセス出来ることを確認します。

参考情報

0
Raw
https://www.techtips.page/en/comments/274
😄2
🔧1
💡1
❤️1

Windowsでのnetshを用いたポートフォワーディングの設定

wakairo @wakairo
Last edited

ポートフォワーディングを設定する

管理者権限で以下のコマンドを実行する。

netsh interface portproxy add v4tov4 listenaddress=<転送元(ホストOS)のipアドレス> listenport=<転送元ポート> connectaddress=<転送先ipアドレス> connectport=<転送先ポート>

注意事項:ポートフォワーディングの実用ケースでは、ファイアウォールの設定も追加で必用な場合が多いです。参考情報: https://gunmagisgeek.com/blog/other/7171

ポートフォワーディングの設定を確認する

netsh interface portproxy show all

ポートフォワーディングを削除する

netsh interface portproxy delete v4tov4 listenaddress=<転送元(ホストOS)のipアドレス> listenport=<転送元ポート>

参考情報

0
Raw
https://www.techtips.page/en/comments/273
😄1

meta-tags側のtruncateでは、スペース文字のところで切り詰めが行われます

wakairo @wakairo
Last edited

問題

meta-tagsはtitleやdescriptionをSEOに適切な長さまでに切り詰めますが、titleなどの中にスペース文字が含まれていると、スペース文字のところで切り詰めてしまいます。そのため、文章の先頭付近のみにスペース文字がある文章は大幅に切り詰めが行われてしまいます。
例えば、次の文章にあるスペース文字は10文字目のところのみです。

Microsoft Copilotは、あなたの言葉をパワフルなコンテンツに変えるAIアシスタントです。あなたのニーズに合わせて、文章を生成、要約、編集、変換したり、コードや詩などの創造的なコンテンツを作成したりします。

したがって、80文字に切り詰める設定であっても、この10文字目のところで切り詰められて「Microsoft」となり、80文字に比べ大幅に短い文字数に切り詰められることになってしまいます。

回避策

回避策はいくつかあります。

v2.21.0で追加された'truncate_on_natural_separator'の設定を利用する

設定ファイルであるmeta_tags.rbの中で、以下の記述を行うことで、スペース文字のところで切り詰めなくなります。詳細はmeta-tagsの設定truncate_on_natural_separatorの説明をご覧ください。

config.truncate_on_natural_separator = nil

アプリケーション側で切り詰めを行う

meta-tagsに渡す前に、あらかじめアプリケーション側で切り詰めを行うことでも、この問題は回避できます。なお、meta-tagsの設定によっては、meta-tags側での切り詰めをオフにすることも出来ます。設定方法についてはmeta-tagsのREADMEを参照してください。

(参考)内部的な原因

meta-tagsはRuby on Railsのtruncateヘルパーメソッドを最終的に呼び出しますが、このヘルパーメソッドをラップするメソッドを内部に持っています。このラッパーメソッドの引数であるnatural_separatorを省略してのメソッド呼び出しがmeta-tags内に存在し、v2.19.0までは、この省略時のnatural_separatorのデフォルト値がスペース文字であるため、スペース文字のところでの切り詰めが発生しています。

v2.21.0からは、前述の引数natural_separatorが廃止され、ラッパーメソッド内で前述の'truncate_on_natural_separator'の設定値が与えられるようになっています。ですのでこの設定値を変えることで、スペース文字のところで切り詰めなくしたり、任意の文字での切り詰めたりすることが可能になりました。

0
Raw
https://www.techtips.page/en/comments/269
😄1
🔄1
🔧1
😿1

Emacsで日本語とEmojiをとりあえず表示する方法

wakairo @wakairo
Last edited

まずは、OSに利用したいフォントをインストールします。
例えば、Ubuntuでは以下のコマンドで、Notoの日本語フォント(等幅フォントを含む)とEmojiのフォントをインストールできます。

sudo apt-get install fonts-noto-cjk
sudo apt-get install fonts-noto-color-emoji

次に、.emacsに以下の設定を追記します。Emacsを再起動するなどして、この設定を反映させれば、とりあえず日本語とEmojiは表示されるようになります。

(create-fontset-from-ascii-font "Noto Sans Mono CJK JP" nil "Monospace")
(set-fontset-font "fontset-Monospace" 'unicode "Noto Color Emoji" nil 'append)
(add-to-list 'default-frame-alist '(font . "fontset-Monospace"))

ちなみにフォントサイズは、以下のようにハイフン(-)の後ろの数字で指定できます。

(create-fontset-from-ascii-font "Noto Sans Mono CJK JP-12" nil "Monospace")
0
Raw
https://www.techtips.page/en/comments/268
❤️2
😄1
🔧1

Copilot Studioのニュースや記事

wakairo @wakairo

【Copilot Studio】社内TeamsにCopilotを導入する手順

目次
  • Web版Copilot Studioでボットを作成した場合
  • ボットをチーム内に共有する
  • チームのアプリストアに反映させて共有する
  • 権限の管理
  • Teamsアプリ内でボットを作成する場合
  • 作成から導入の流れ
  • まとめ:どちらの方法が良いのか?
0
Raw
https://www.techtips.page/en/comments/267
😄1

Copilot Studioのニュースや記事

copilot こぱいろっとスキー @copilot
Last edited

Microsoft Copilot Studioで生成型回答をするCopilotの作成方法

以下の目次からも分かるとおり、手順を1つずつ丁寧に追っていて、分かりやすそうな記事です。

  1. Micsofot Copilot Studioとは
  2. Micsofot Copilot Studioの利用方法
  3. 事前設定
  4. Copilotの作成
  5. Copilotのテスト
  6. Copilotの公開
  7. まとめ
1
Raw
https://www.techtips.page/en/comments/227
❤️1

rails 7.0からrails 7.1への移行(アップデート、アップグレード)で必要な作業

wakairo @wakairo
Last edited

Rails 7.1でのaction_dispatch.show_exceptionsの変更への対応方法

対応の基本的な方向性

config.action_dispatch.show_exceptionsを今後のデフォルトとなる:rescuableに設定してbin/rails testでテストを実行します。テストの実行に問題が無く、:rescuableの仕様で支障が無い場合はこれでOKです。

設定で:rescuableを選択してテストを実行するとエラーが出るようになってしまった場合は、テストを修正するか、:rescuable以外の設定値にします。元々trueと設定していた場合には:allfalseと設定していた場合には:noneへと設定し直せば、以前の挙動と同じになり、エラーは出なくなるはずです。

より詳しい情報を紹介している記事

本件の背景やテストの修正方法など、より詳しい情報はこちらの記事をご覧下さい。

0
Raw
https://www.techtips.page/en/comments/223

rails 7.0からrails 7.1への移行(アップデート、アップグレード)で必要な作業

wakairo @wakairo

Rails 7.1への移行におけるActive Storageのmigration

bin/rails app:updateコマンドを実行すると以下の3つのファイルがdb/migrate/に作成されますが、
Active Storageをまだ使用したことがないアプリケーションでは、 これら3つのファイルは単純に削除してしまって良いはずです。

  • xxx_add_service_name_to_active_storage_blobs.active_storage.rb
  • xxx_create_active_storage_variant_records.active_storage.rb
  • xxx_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb

より正確に言うと、データベースにactive_storage_blobsテーブルが存在していない場合は、 これら3つのファイルは単純に削除してしまって良いはずです。 その理由として、これら3つのファイルはデータベースのactive_storage_blobsテーブルに対して影響を与えるものであり、 table_exists?(:active_storage_blobs)がfalseを返すと何もせずにreturnする処理が3つのファイル全てに記述されているからです。

ご自身のRailsアプリケーションのデータベースにactive_storage_blobsテーブルが存在するかの確認はbin/rails consoleを実行して、 以下のようにコマンドを実行することで行えます。 結果がfalseであればactive_storage_blobsテーブルは存在していない、つまり前述の3つのファイルは削除で大丈夫のはずです。

irb(main):002> ActiveRecord::Base.connection.table_exists? :active_storage_blobs
=> false

ちなみに、データベースにあるテーブルの一覧を見たい場合にはbin/rails consoleActiveRecord::Base.connection.tablesを叩くことでテーブルの一覧を確認できます。

0
Raw
https://www.techtips.page/en/comments/222