Wouldn't this give a false sense of security?  What if, as a result of some
model changes, something outside of a transaction (say background job) is
triggered?

On Tue, Feb 17, 2015 at 3:55 PM, Andy A <andyatkin...@gmail.com> wrote:

> It is an interesting idea. It seems like a reasonable safeguard. Usually
> for this sort of thing, I try to get the actual data, or very similar data,
> in my local database, and make the changes there. I can restore from a dump
> file locally over and over if needed. I write a script and deploy it if the
> change is more than a few lines. The script also serves as documentation
> for other developers to apply it, or fetch new data from production.
>
> Maybe you could develop this as a gem and try it out in your project, then
> if you like it, and some people are using it, propose it to Rails. I'd be
> interested to try it anyway, feel free to ping me if you want someone to
> kick the tires. :) https://github.com/andyatkinson
>
>
>
> On Friday, December 5, 2014 at 12:28:36 AM UTC-5, Daniel Treacy wrote:
>>
>> Whilst it is asking for trouble, many developers (myself included) cannot
>> resist the occasional temptation to drop into a Rails console in a
>> production environment and perform data mods on production data.
>>
>> In the spirit of the current "sandbox" option available in the Rails
>> console, what do you think about another option that offers a "protected"
>> session, in which:
>>
>>    - Like "sandbox", the console session is wrapped in a database
>>    transaction, but
>>    - At the end of the session changes are listed (either summarily in #
>>    of changes, or in listed detail) and can be committed or rolled back by
>>    "y/n" confirmation
>>
>> Why?
>>
>> In addition to protecting against ruining production data, it would allow
>> people to inspect and validate the effect of their data mod on production
>> data without having to apply a DB-wide restore from a backup if a mistake
>> is made or changes aren't what they expect.
>>
>> The test case in `console_test.rb` might look like:
>>
>>
>>
>>   def test_protected
>>     spawn_console
>>
>>
>>     write_prompt "Post.count", "=> 0"
>>     write_prompt "Post.create"
>>     write_prompt "Post.count", "=> 1"
>>
>>
>>     @master.puts "quit"
>>
>>
>>     assert_output "Commit 1 change? (y/n)"
>>
>>
>>     @master.puts "n"
>>
>>
>>     spawn_console
>>
>>
>>     write_prompt "Post.count", "=> 0"
>>     write_prompt "Post.create"
>>     write_prompt "Post.create"
>>     write_prompt "Post.count", "=> 2"
>>
>>
>>     @master.puts "quit"
>>
>>
>>     assert_output "Commit 2 changes? (y/n)"
>>
>>
>>     @master.puts "y"
>>
>>
>>     spawn_console
>>
>>
>>     write_prompt "Post.count", "=> 2"
>>   end
>>
>>
>>
>>
>>
>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-core+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-core@googlegroups.com.
> Visit this group at http://groups.google.com/group/rubyonrails-core.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to