代码之家  ›  专栏  ›  技术社区  ›  jerhinesmith

从Rails中的外部文件执行命令

  •  1
  • jerhinesmith  · 技术社区  · 16 年前

    有没有一种简单的方法让Rails操作加载命令的外部文件,然后执行它们?

    例如,我正在尝试编写一组Rails创建方法来预填充数据库中的一组表。

    理想情况下,我希望该操作检查文件是否存在,如果存在,请运行所有命令,然后删除该文件,使其不再执行。

    所以,外部文件基本上是这样的:

    MyTable.create :name => "New 1"
    MyTable.create :name => "New 2"
    

    这在铁路上容易实现吗?

    一些阐述:

    其想法是,如果某个设置表在发布后需要进行修改,并且您无法通过迁移脚本(即,您正在从schema.rb文件初始化数据库)进行修改,则可以:

    1. 例如,创建一个名为“update_data.rb”的文件
    2. 将其放在管理目录中
    3. 针对浏览器中的某些操作(即/admin/update_data)
    4. 然后,Rails将读取该文件,逐行执行命令,然后
    5. 完成后删除文件,这样就不会意外地再次执行操作。

    有帮助吗?它将是一个一次性操作的文件,需要在发布后执行。如果有更好的方法,我一定全力以赴!

    3 回复  |  直到 16 年前
        1
  •  2
  •   Andy Gaskell    16 年前

    另一个选择是rake。您可以在lib/tasks中创建一个新文件-我们将称您的bootstrap.rake

    namespace :db do
      desc 'Load an initial set of data'
      task :bootstrap => :environment do
        if your_file_exists
          puts 'Loading data...'
          this_is_where_the_magic_happens        
        end
      end
    end
    

    然后,您可以从控制台运行rake db:bootstrap,并根据需要使用crontab进行调度。

        2
  •  1
  •   phss    16 年前

    步骤4:

    load("update_data.rb")
    

    我相信这将加载并执行您的脚本。

        3
  •  0
  •   mwilliams    16 年前
    推荐文章