2/25リリースの6.0.0.beta2で試してみました。DBにはsqlite3を使用しています。
Rubyとnode.jsのバージョン指定
rbenvとndenvを使用して管理しているので、下記のように設定しました。
echo 2.5.1 > .ruby-version
echo v11.10.1 > .node-version
Rubyのバージョンが古いと下記の様なエラーがでるのでRubyのバージョンは2.5.0以上を指定する必要があります。
Bundler could not find compatible versions for gem "ruby":
In Gemfile:
ruby
rails (~> 6.0.0.beta2) was resolved to 6.0.0.beta2, which depends on
ruby (>= 2.5.0)
Railsのインストール
bundle init
echo "gem 'rails', '~> 6.0.0.beta2'" >> Gemfile
echo /vendor/bundle >> .gitignore
bundle install --path vendor/bundle
bundle exec rails new .
とすればRailsの準備は完了です。
DBのMigration
bin/rails db:create
bin/rails db:migrate
ActionTextの準備
bundle exec rails action_text:install
echo "gem 'image_processing'" >> Gemfile
bundle install --path vendor/bundle
ImageMagickのインストール
ImageMagick(又はGraphicsMagick)が入っていなかったらインストールします。
brew install imagemagick
Postモデル作成
bundle exec rails generate scaffold Post title:string
bundle exec rails db:migrate
動かしてみる
bundle exec rails s
記事作成
/posts/new
にアクセスして新規作成します、リッチテキストエディタがついていて画像もD&Dできます。
記事表示
Create Post
を押すと表示されます。
表示
リッチテキスト部分のHTMLは↓のようになっていました。ActionTextではtrixというライブラリが使われているようで、classにtrix-content
というクラスがついていました。
<div class="trix-content">
<div>
<strong>ActionText</strong><br><action-text-attachment sgid="BAh7CEkiCGdpZAY6BkVUSSI3Z2lkOi8vYWN0aW9uLXRleHQvQWN0aXZlU3RvcmFnZTo6QmxvYi8xP2V4cGlyZXNfaW4GOwBUSSIMcHVycG9zZQY7AFRJIg9hdHRhY2hhYmxlBjsAVEkiD2V4cGlyZXNfYXQGOwBUMA==--212aa139f16ce3056de2e530229443bb7638826f" content-type="image/png" url="http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--650279ed9ee7b4a7c17ee4483d47b125d6a57596/rails.png" filename="rails.png" filesize="295708" width="1154" height="774" previewable="true" presentation="gallery"><figure class="attachment attachment--preview attachment--png">
<img src="http://localhost:3000/rails/active_storage/representations/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--650279ed9ee7b4a7c17ee4483d47b125d6a57596/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCam9VY21WemFYcGxYM1J2WDJ4cGJXbDBXd2RwQWdBRWFRSUFBdz09IiwiZXhwIjpudWxsLCJwdXIiOiJ2YXJpYXRpb24ifX0=--58d955dca830fe0c65cc0103d0b56194b9c573e7/rails.png">
<figcaption class="attachment__caption">
<span class="attachment__name">rails.png</span>
<span class="attachment__size">289 KB</span>
</figcaption>
</figure></action-text-attachment>
</div>
</div>
テーブル一覧
- action_text_rich_texts
- ar_internal_metadata
- active_storage_attachments
- posts
- active_storage_blobs
- schema_migrations
データ
ここまで実行してデータベースにどんなデータが入っているか調べてみました。それぞれ一行目がカラム名になっています。
action_text_rich_texts
リッチテキストを保存するテーブルではtrix-content
クラス内のデータがそのまま入っていました。
id|name|body|record_type|record_id|created_at|updated_at
1|content|<div><strong>ActionText</strong><br><action-text-attachment sgid="BAh7CEkiCGdpZAY6BkVUSSI3Z2lkOi8vYWN0aW9uLXRleHQvQWN0aXZlU3RvcmFnZTo6QmxvYi8xP2V4cGlyZXNfaW4GOwBUSSIMcHVycG9zZQY7AFRJIg9hdHRhY2hhYmxlBjsAVEkiD2V4cGlyZXNfYXQGOwBUMA==--212aa139f16ce3056de2e530229443bb7638826f" content-type="image/png" url="http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--650279ed9ee7b4a7c17ee4483d47b125d6a57596/rails.png" filename="rails.png" filesize="295708" width="1154" height="774" previewable="true" presentation="gallery"></action-text-attachment></div>|Post|1|2019-03-02 21:03:15.780497|2019-03-02 21:17:28.620250
urlの部分にドメインやポート番号まで含まれたURLが入っていたのでport番号を変更して立ち上げて確認してみましたが、リクエストではちゃんとポート番号が変更されてリクエストが送られていました。どこで変更しているかまでは調べていません。
ar_internal_metadata
environmentの情報が入っていてDBのdropタスクなどで間違えて消さないようにするために使われているようです。
key|value|created_at|updated_at
environment|development|2019-03-02 20:40:18.832305|2019-03-02 20:40:18.832305
active_storage_attachments
id|name|record_type|record_id|blob_id|created_at
1|embeds|ActionText::RichText|1|1|2019-03-02 21:03:15.842697
posts
id|title|created_at|updated_at
1|test|2019-03-02 21:03:15.722712|2019-03-01 21:17:28.714240
active_storage_blobs
画像データのファイル名や保存場所などが記録されているデータのようです。
id|key|filename|content_type|metadata|byte_size|checksum|created_at
1|9gpw4sr15j24q3de7qd6a3vj8ly8|rails.png|image/png|{"identified":true,"analyzed":true}|295708|LFFuycb6VcPiPXgSWOXaIQ==|2019-03-02 21:03:01.141964
ローカルストレージの場合↓のようにstorage
ディレクトリ以下にkey
を頭から2文字ずつ計4文字分をディレクトリに分けて保存されていました。
storage/9g/pw/9gpw4sr15j24q3de7qd6a3vj8ly8
S3に保存した場合など、webサーバーを通さないで配信する場合どうなるのかとかを今後調べてみたいです。
schema_migrations
version
20190301023849
20190301023850
20190301025408