database.rb:199:in `execute': wrong number of arguments (given 3, expected 1..2) (ArgumentError)
Describe the bug
Running ruby notes_cloud_ripper.rb --mac ../Backup\ 2024.07 (pointing to a specific directory of the Apple Notes backup), returns error
Starting Apple Notes Parser at Fri Aug 2 15:06:33 2024
Storing the results in ./output/2024_08_02-15_06_33
Created a new AppleBackup from Mac backup: ../Backup 2024.07
Guessed Notes Version: 17
/Users/myUsername/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/sqlite3-2.0.3-arm64-darwin/lib/sqlite3/database.rb:199:in `execute': wrong number of arguments (given 3, expected 1..2) (ArgumentError)
from /Users/myUsername/Development/apple_cloud_notes_parser-0.16.2/lib/AppleNoteStore.rb:689:in `rip_notes'
from /Users/myUsername/Development/apple_cloud_notes_parser-0.16.2/lib/AppleNoteStore.rb:232:in `rip_all_objects'
from /Users/myUsername/Development/apple_cloud_notes_parser-0.16.2/lib/AppleBackup.rb:243:in `block in rip_notes'
from /Users/myUsername/Development/apple_cloud_notes_parser-0.16.2/lib/AppleBackup.rb:240:in `each'
from /Users/myUsername/Development/apple_cloud_notes_parser-0.16.2/lib/AppleBackup.rb:240:in `rip_notes'
from notes_cloud_ripper.rb:194:in `<main>'
To Reproduce As above
Expected behavior Should have run normally.
Screenshots None
Desktop (please complete the following information):
- OS: macOS
- Version: Sonoma 14.5
- Ruby Version: ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin23] (through
rbenv)
Smartphone Source (please complete the following information, if applicable): None
Command used ruby notes_cloud_ripper.rb --mac ../Backup\ 2024.07
Please confirm the following
- Error occurs on the latest version of this program on GitHub: Y
- You have run
bundle install: Y
Additional context None
Thanks for sharing this. I will give it a test on my Mac to reproduce. Personal issues have taken me away from this project for a little bit, so it wouldn't surprise me if a few of the changes I had in the works need to be pushed to fix this.
Ok, I thought this looked familiar. It is the same issue as #111, although there the focus was on creating a Gemfile. I recall while digging into this I also was poking at how to fix the error regardless of the versioning, but never got around to committing that because I wanted to make sure I was happy it wouldn't introduce other bugs. I'll leave both of these tickets open to shame me into fixing it.
Thanks a lot. A fix would be truly appreciated. Oddly, Apple does not enable versioning on normal notes – apparently just on shared notes (where you can see the Note Activity pane). I am trying to extract a rather lengthy note I inadvertently deleted the content from from a previous backup.
So I've started poking at this and I'm confused. I handled at least some of the database.execute calls with multiple arguments in a82014e01cf72bcb5852227d0fc08c5466f0356a, including the one at the root of #111. So that line should be fine. In this case, your error is on a line that has exactly one database argument, the query itself, so I'm not sure why it is throwing the error it is. That line hasn't ever changed in the past 5 years, it has always been one argument.
https://github.com/threeplanetssoftware/apple_cloud_notes_parser/blob/3641106bb834ff2c0e67a3c9ef720e58b075f49b/lib/AppleNoteStore.rb#L689-L689
I tried a clean install of Ruby 3.3.4 (using rvm) on my Mac test box and it worked fine after the gems installed correctly. I say installed correctly because the current version of openssl is too new for the Gemfile's restrictions and I had to make it as follows (which is also pointed out in the other thread and I'll push this change at some point).
gem 'openssl', ">= 2.2" # Ruby official
But that shouldn't affect you, since it just wouldn't install the gems if that was the problem. So I have to apologize, I'm extremely confused as to why that error would happen, if you are on the latest version, tracking the master branch.
Anything else I can try?
I've run into issues where things like rbenv end up with gems in the wrong place. Can you check your Gemfile.lock? This is mine:
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.7)
base64
nkf
rexml
aes_key_wrap (1.1.0)
base64 (0.2.0)
cgi (0.4.1)
diff-lcs (1.5.1)
fileutils (1.7.2)
google-protobuf (4.26.1)
rake (>= 13)
google-protobuf (4.26.1-aarch64-linux)
rake (>= 13)
google-protobuf (4.26.1-arm64-darwin)
rake (>= 13)
google-protobuf (4.26.1-x86-linux)
rake (>= 13)
google-protobuf (4.26.1-x86_64-darwin)
rake (>= 13)
google-protobuf (4.26.1-x86_64-linux)
rake (>= 13)
keyed_archive (1.0.0)
CFPropertyList (~> 3.0)
mini_portile2 (2.8.7)
nkf (0.2.0)
nokogiri (1.15.6-aarch64-linux)
racc (~> 1.4)
nokogiri (1.15.6-arm-linux)
racc (~> 1.4)
nokogiri (1.15.6-arm64-darwin)
racc (~> 1.4)
nokogiri (1.15.6-x86-linux)
racc (~> 1.4)
nokogiri (1.15.6-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.15.6-x86_64-linux)
racc (~> 1.4)
openssl (3.2.0)
racc (1.8.1)
rake (13.2.1)
rexml (3.3.4)
strscan
rspec (3.13.0)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.0)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-support (3.13.1)
sqlite3 (1.7.3)
mini_portile2 (~> 2.8.0)
strscan (3.1.0)
zlib (1.1.0)
PLATFORMS
aarch64-linux
arm-linux
arm64-darwin
x86-linux
x86_64-darwin
x86_64-linux
DEPENDENCIES
aes_key_wrap (~> 1.1)
cgi (~> 0.3)
fileutils (~> 1.4)
google-protobuf (~> 4.26)
keyed_archive (~> 1.0)
nokogiri (~> 1.14)
openssl (>= 2.2)
rake (~> 13.2)
rspec
sqlite3 (~> 1.4)
zlib (~> 1.1)
BUNDLED WITH
2.4.20
You might try using rbenv to reinstall that version of Ruby, or install a different version of Ruby, then run bundle install again. I'm still at a loss to understand how that line is giving you problems and would be interested to hear what happens with rbenv reinstalling that version of Ruby and a fresh bundle install.
My apologies for not having a clear answer.
Thanks a lot. I'm on vacation and will check next week once I'm back. 🏝️
Just checking in, did the latest version solve the issue?
@threeplanetssoftware Amazing. Thanks, yes the new version fixed the issue.
ruby notes_cloud_ripper.rb --mac ../Backup_2024.08.02
Starting Apple Notes Parser at Wed Sep 11 12:03:04 2024
Storing the results in ./output/2024_09_11-12_03_04
Created a new AppleBackup from Mac backup: ../Backup_2024.08.02
Guessed Notes Version: 17 on Mac
Updated AppleNoteStore object with 417 AppleNotes in 32 folders belonging to 1 accounts.
Adding the ZICNOTEDATA.ZPLAINTEXT and ZICNOTEDATA.ZDECOMPRESSEDDATA columns, this takes a few seconds
Successfully finished at Wed Sep 11 12:03:05 2024
ls ./output/2024_09_11-12_03_04
drwxr-xr-x 7 alex staff 224B 11 Sep 12:03 .
drwxr-xr-x 3 alex staff 96B 11 Sep 12:03 ..
-rw-r--r--@ 1 alex staff 19M 11 Sep 12:03 NoteStore.sqlite
drwxr-xr-x 7 alex staff 224B 11 Sep 12:03 csv
-rw-r--r-- 1 alex staff 3.5M 11 Sep 12:03 debug_log.txt
drwxr-xr-x 3 alex staff 96B 11 Sep 12:03 html
drwxr-xr-x 3 alex staff 96B 11 Sep 12:03 json
@threeplanetssoftware Excuse me if that's a stupid question. But I can only find CSV/JSON/HTML versions of the Notes index structure – nicely shown. But where do I find the actual note text? There's also a NoteStore.sqlite file but that shows the same encrypted things from the original file, I believe. I'd simply need the full unencrypted text of a few of my notes where I found the ID from your index structure.
I'm glad it works! If you just want the plaintext of the note, you can find that in the csv/note_store_notes.csv file(s), or in the JSON object's plaintext field. The NoteStore.sqlite file also adds the plaintext in ZICNOTEDATA.ZPLAINTEXT if you prefer to run SQL queries against it.
I hope this helps!
Okay, so then this does not work for me. For me all these plain note texts are empty. Every other field seems okay. I greyed out my sensitive data (which was extracted correctly).
The debug_log.txt contains lots of entries saying …
E, [2024-09-11T12:03:04.704921 #17347] ERROR -- : AppleNoteStore: NoteStore tried to rip Note70 but had to rescue error: can't modify frozen String: *snip*
Thanks, I'll take a look. I edited your comment to remove the protobuff output from it.
I have what should be an analogous setup on my test Mac, but I cannot recreate that error.
notta@cuppa apple_cloud_notes_parser % uname -m -r -s -v
Darwin 23.5.0 Darwin Kernel Version 23.5.0: Wed May 1 20:19:05 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T8112 arm64
notta@cuppa apple_cloud_notes_parser % ruby -v
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin23]
In case it matters, one difference I see is I am using rvm, whereas you're using rbenv. Have you tried using a different version, maybe ruby-3.2 to see if the output changes?
One other thought, can you please try rake test to see if any tests fail out?
$ rake test
Run options: exclude {:missing_data=>true, :expensive=>true}
.....................................**..................*.*...............................................................................*....FFFFFFFFFFFFFFFFFD, [2024-09-12T13:52:16.152905 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.153038 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.153105 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.158425 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.158524 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.158600 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.158691 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.158764 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.159844 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.159976 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.160037 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.160119 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.D, [2024-09-12T13:52:16.160188 #28775] DEBUG -- : Created a new Embedded Object of type thumbnail
.Added 3 passwords to the AppleDecrypter from spec/data/password_examples/multiple_passwords
Added 3 passwords to the AppleDecrypter from spec/data/password_examples/multiple_passwords
..Added 1 passwords to the AppleDecrypter from spec/data/password_examples/right_to_left_password
.Added 1 passwords to the AppleDecrypter from spec/data/password_examples/wide_character_password
.Added 1 passwords to the AppleDecrypter from spec/data/password_examples/emoji_password
.Added 1 passwords to the AppleDecrypter from spec/data/password_examples/spaces_in_password
..........
Pending: (Failures listed here are expected and do not affect your suite's status)
1) AppleNote specific examples shows lists properly
# Temporarily skipped with xit
# ./spec/base_classes/apple_note.rb:306
2) AppleNote specific examples shows blockquotes properly
# Temporarily skipped with xit
# ./spec/base_classes/apple_note.rb:336
3) AppleNote output includes the Cloudkit Creator section if one exists
# Temporarily skipped with xit
# ./spec/base_classes/apple_note.rb:483
4) AppleNote output includes the Cloudkit Modifier section if one exists
# Temporarily skipped with xit
# ./spec/base_classes/apple_note.rb:498
5) AttributeRun block tags doesn't open new tags for adjacent runs of the same type
# Temporarily skipped with xit
# ./spec/base_classes/proto_patches.rb:243
Failures:
1) AppleNotesEmbeddedInlineAttachment output Uses its alt text as the to_s output
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/inline_objects.rb:10:in `new'
# ./spec/embedded_objects/inline_objects.rb:10:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
2) AppleNotesEmbeddedInlineAttachment output Creates a CSV array with the right number of fields to align with other objects
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/inline_objects.rb:10:in `new'
# ./spec/embedded_objects/inline_objects.rb:10:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
3) AppleNotesEmbeddedInlineAttachment output Creates appropriate JSON
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/inline_objects.rb:10:in `new'
# ./spec/embedded_objects/inline_objects.rb:10:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
4) AppleNotesEmbeddedInlineLink output conforms to an inline attachment
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/inline_objects.rb:73:in `new'
# ./spec/embedded_objects/inline_objects.rb:73:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
5) AppleNotesEmbeddedInlineLink output Uses its alt text as the to_s output
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/inline_objects.rb:73:in `new'
# ./spec/embedded_objects/inline_objects.rb:73:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
6) AppleNotesEmbeddedInlineHashtag output conforms to an inline attachment
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/inline_objects.rb:120:in `new'
# ./spec/embedded_objects/inline_objects.rb:120:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
7) AppleNotesEmbeddedInlineHashtag output Uses its alt text as the to_s output
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/inline_objects.rb:120:in `new'
# ./spec/embedded_objects/inline_objects.rb:120:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
8) AppleNotesEmbeddedInlineMention output conforms to an inline attachment
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/inline_objects.rb:167:in `new'
# ./spec/embedded_objects/inline_objects.rb:167:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
9) AppleNotesEmbeddedInlineMention output Uses its alt text as the to_s output
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/inline_objects.rb:167:in `new'
# ./spec/embedded_objects/inline_objects.rb:167:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
10) AppleNotesEmbeddedObject table creation reconstructs the whole table
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/tables.rb:13:in `new'
# ./spec/embedded_objects/tables.rb:13:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
11) AppleNotesEmbeddedObject table creation properly orders rows
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/tables.rb:13:in `new'
# ./spec/embedded_objects/tables.rb:13:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
12) AppleNotesEmbeddedObject table creation has different values for the html table
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/tables.rb:13:in `new'
# ./spec/embedded_objects/tables.rb:13:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
13) AppleNotesEmbeddedObject output only has plain text in its to_s output
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/tables.rb:13:in `new'
# ./spec/embedded_objects/tables.rb:13:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
14) AppleNotesEmbeddedObject output displays right-to-left tables in the right direction in to_s output
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/tables.rb:13:in `new'
# ./spec/embedded_objects/tables.rb:13:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
15) AppleNotesEmbeddedObject output generates decent looking HTML
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/tables.rb:13:in `new'
# ./spec/embedded_objects/tables.rb:13:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
16) AppleNotesEmbeddedObject output respects text formatting in HTML output
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/tables.rb:13:in `new'
# ./spec/embedded_objects/tables.rb:13:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
17) AppleNotesEmbeddedObject output properly includes data in its JSON
Failure/Error: return (@root_folder.file? and is_sqlite?(@root_folder) and has_correct_columns?(@root_folder))
NoMethodError:
undefined method `file?' for nil
# ./lib/AppleBackupFile.rb:46:in `valid?'
# ./lib/AppleBackupFile.rb:21:in `initialize'
# ./spec/embedded_objects/tables.rb:13:in `new'
# ./spec/embedded_objects/tables.rb:13:in `block (2 levels) in <top (required)>'
# ./Rakefile:23:in `block in <top (required)>'
Finished in 0.0958 seconds (files took 0.35148 seconds to load)
189 examples, 17 failures, 5 pending
Failed examples:
rspec './spec/embedded_objects/inline_objects.rb[1:1:1]' # AppleNotesEmbeddedInlineAttachment output Uses its alt text as the to_s output
rspec './spec/embedded_objects/inline_objects.rb[1:1:2]' # AppleNotesEmbeddedInlineAttachment output Creates a CSV array with the right number of fields to align with other objects
rspec './spec/embedded_objects/inline_objects.rb[1:1:3]' # AppleNotesEmbeddedInlineAttachment output Creates appropriate JSON
rspec './spec/embedded_objects/inline_objects.rb[2:1:1]' # AppleNotesEmbeddedInlineLink output conforms to an inline attachment
rspec './spec/embedded_objects/inline_objects.rb[2:1:2]' # AppleNotesEmbeddedInlineLink output Uses its alt text as the to_s output
rspec './spec/embedded_objects/inline_objects.rb[3:1:1]' # AppleNotesEmbeddedInlineHashtag output conforms to an inline attachment
rspec './spec/embedded_objects/inline_objects.rb[3:1:2]' # AppleNotesEmbeddedInlineHashtag output Uses its alt text as the to_s output
rspec './spec/embedded_objects/inline_objects.rb[4:1:1]' # AppleNotesEmbeddedInlineMention output conforms to an inline attachment
rspec './spec/embedded_objects/inline_objects.rb[4:1:2]' # AppleNotesEmbeddedInlineMention output Uses its alt text as the to_s output
rspec './spec/embedded_objects/tables.rb[1:1:1]' # AppleNotesEmbeddedObject table creation reconstructs the whole table
rspec './spec/embedded_objects/tables.rb[1:1:2]' # AppleNotesEmbeddedObject table creation properly orders rows
rspec './spec/embedded_objects/tables.rb[1:1:3]' # AppleNotesEmbeddedObject table creation has different values for the html table
rspec './spec/embedded_objects/tables.rb[1:2:1]' # AppleNotesEmbeddedObject output only has plain text in its to_s output
rspec './spec/embedded_objects/tables.rb[1:2:2]' # AppleNotesEmbeddedObject output displays right-to-left tables in the right direction in to_s output
rspec './spec/embedded_objects/tables.rb[1:2:3]' # AppleNotesEmbeddedObject output generates decent looking HTML
rspec './spec/embedded_objects/tables.rb[1:2:4]' # AppleNotesEmbeddedObject output respects text formatting in HTML output
rspec './spec/embedded_objects/tables.rb[1:2:5]' # AppleNotesEmbeddedObject output properly includes data in its JSON
$ ruby --version
ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin23]
Ok, that looks about right. I pushed a fix this morning for those 17 that fail because test data isn't available, but the vast majority are passing. I'm really unsure about the issue. Can you try using rbenv to run ruby 3.2? Or using the Docker image (sh docker_scripts/mac_run_notes.sh) to see if there is a difference in output?
Thank you. Switching to ruby 3.2.5 solved the issue. I tried with 3.3.4 using your updated project but that had the same error: not showing the plain text. After switching the plain text was there.