小编Jen*_*ish的帖子

如何获取调用别名方法的名称?

我有方法调用link_to_admin然后我已经别名另一个方法调用simple_link_to

def link_to_admin(name,url,options={})

  # My stuff here
  link_to(name,url,options)          
end

alias_method :simple_link_to, :link_to_admin
Run Code Online (Sandbox Code Playgroud)

如果我打电话link_to_admin,我在这里面临一个问题,我想将值打印到<li>标签中

防爆.

def link_to_admin(name,url,options={})

  # My stuff here
   menu = ""
   menu << "<li> #{link_to(name,url,options)}</li>"
   menu.html_safe
end
Run Code Online (Sandbox Code Playgroud)

如果我打电话simple_link_to不需要<li>标签.所以目前我正在通过一个optionsli_required我的方法检查条件.这是完美的,我知道这是正确的方法.

def link_to_admin(name,url,options={})
   menu = ""
   menu << options[:li_required] ? "<li> #{link_to(name,url,options)}</li>" : link_to(name,url,options)
   menu.html_safe
end
Run Code Online (Sandbox Code Playgroud)

但是,在我试图找到像simple_method或之类的调用方法之前link_to_admin,我尝试过:

1.__method__
2.caller[0]=~/`(.*?)'/
Run Code Online (Sandbox Code Playgroud)

这没有按预期工作.

我在呼唤simple_methodlink_to_admin方法,layout所以__method__总是link_to_admin只返回.

但是 …

ruby ruby-on-rails ruby-2.0 ruby-on-rails-4 ruby-2.1

5
推荐指数
2
解决办法
1180
查看次数

在rails应用程序中运行rake任务

我想在rails应用程序中运行资产预编译任务,因为我有许多依赖项将更改代码,在这种情况下,无论何时更改我都需要运行脚本,因为我无法让服务器访问它们所以我提供从他们自己的GUI可以运行脚本,因此,我已经构建了UI来运行任务与一些参数,如

system("Template='#{params[:template]}' Theme='#{params[:theme]}' rake assets:precompile)
Run Code Online (Sandbox Code Playgroud)

我从UI获取了两个值(params [:template],params [:theme]).我想在另一个路径(站点路径)中运行此任务的另一个意思是管理端UI是那个任务应该在Site目录中执行,

  if(params[:theme_script] == "true")
      template=Template.where(:name => params[:template]).first
     if template
      theme = template.themes.where(:name => params[:theme]).first
      if theme
    #   Dir.chdir "#{THEMEPATH}"do
    #     `Template="#{template.name}" Theme="#{theme.name}" rake assets:precompile`
    #   end
    #      sleep 10
    #      system("#{Rails.root.to_s}/lib/shell_script.sh")
    #      RunRake.run_rake(template.name,theme.name)
    #   Dir.chdir "#{THEMEPATH}"do
    #     Rake::Task['assets:precompile'].invoke
    #   end
          ENV["Template"] = template.name
          ENV["Theme"] = theme.name
          precompile_task = "bundle exec rake assets:precompile --trace 2>&1"
          output = Dir.chdir(THEMEPATH) { %x[ #{precompile_task} ] }
          flash[:notice] = "Asset created successfully"
      else
        flash[:notice] = "U have enter …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails rake-task ruby-on-rails-3.1 asset-pipeline

2
推荐指数
1
解决办法
3770
查看次数