This change is similar to #11736 & in same way switched with fixed string & the index of the hash for method name. the index was added because otherwise, ruby will raise Error.
This commit fixes the build but we need to further investigate the root cause,
to see if it can be fixed.
The test fails under `MysqlAdapter` with:
```
ActiveRecord::UnknownAttributeError: unknown attribute: なまえ
```
The root cause is that the returned column names from the adapter
have the wrong encoding:
```ruby
columns = Weird.columns_hash.keys
columns # => ["id", "a$b", "\xE3\x81\xAA\xE3\x81\xBE\xE3\x81\x88", "from"]
columns.map(&:encoding) # => [#<Encoding:ASCII-8BIT>, #<Encoding:ASCII-8BIT>, #<Encoding:ASCII-8BIT>, #<Encoding:ASCII-8BIT>]
columns.map {|c| c.dup.force_encoding "utf-8"} # => ["id", "a$b", "なまえ", "from"]
```
From what I can tell the MySQL variables are fine:
```
ActiveRecord::Base.connection.execute("show variables")
...
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/local/Cellar/mysql/5.5.29/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database utf8_unicode_ci
collation_server utf8_general_ci
...
```
MRI reimplemented Date in C so it doesn't hit this division anymore
while JRuby still uses the old stdlib implementation of Date so
it will always hit this.
With this change the actionview date_helper_test.rb tests should pass on JRuby.
If the `db/` directory is not present on a remote machine it will blow up in unexpected ways with error messages that do not indicate there is a missing directory:
```
SQLite3::CantOpenException: unable to open database file
```
This PR checks to see if a directory exists for the sqlite3 file and if not creates it for you.
This PR is an alternative to #11692 as suggested by @josevalim
- routes for CRUD already exists as `resources :posts` is in
`config/routes.rb`
- So we don't have to add any new route in the `config/routes.rb`
- As per #11644, the adding of routes which are already there confuses user, so here its
changed to referring output of `rake routes`
`result_metadata` returns a new object each time it is called, so calling `result_metadata.free` is essentially a noop. Instead call `free` directly on the metadata when we're done with it.