【问题标题】:access rails app without using http在不使用 http 的情况下访问 rails 应用程序
【发布时间】:2011-12-11 19:09:28
【问题描述】:

是否可以在不通过 h​​ttp 层的情况下与 rails(3) 应用程序交互?我有一些进程在服务器上本地运行,我希望能够进行一些更改。类似于您可以在 rails 控制台中执行的操作,但以非交互方式。我只是调用一些 ruby​​ 脚本来更新数据库中的一些记录,而不是自己在 rails 控制台中键入它们。

【问题讨论】:

  • 请更具体一些,您可以使用 rake 来完成任务等,但这取决于您具体需要做什么
  • rails runner 'puts "this is executed in the context of your app"'?
  • 如果您需要运行后台作业,还有 Resque 和 DelayedJob。

标签: ruby-on-rails ruby


【解决方案1】:

尝试编写自定义 rake 任务。

在您的 lib/tasks 目录中放置一个文件,例如 task.rake。在该文件中,定义一个任务:

task :mytask => :environment do
    #code here
end

并从命令行调用它:

> rake mytask

【讨论】:

    【解决方案2】:

    如果您只是想更新数据库中的一堆记录,则不需要完整的 Rails 安装。您可以编写脚本并手动建立连接。比如:

    require 'rubygems'
    require 'active_record'
    
    class User < ActiveRecord::Base
      establish_connection :adapter => "sqlite3",  :database => "users.db"
      set_table_name "users"
    end
    
    User.create(:name => 'a user', :email => 'user@example.com')
    

    并以你想要的方式从 cron 调用它。

    【讨论】:

    • 有趣,这会比第一个答案中提到的快很多吗?
    【解决方案3】:

    编写您正在谈论的这些脚本,通过 ssh 连接并从 bash 运行它们?!^^

    ssh 是安全外壳,……。像 telnet 但是用 ssl 加密,如果你不是 linux 用户,你可能不知道...

    啊,该死的,当您编写这些脚本时,您必须这样做才能获得您的应用程序环境:

    require 'config/environment.rb'
    

    在需要环境文件后,您可以使用脚本访问所有模型!

    【讨论】:

    • 我很确定 OP 想知道如何编写和运行脚本,而不是如何通过 SSH 连接到服务器。
    • 只需要'config/environment.rb'就足够了,谢谢!这就是我所需要的。
    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 2017-11-09
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多