小编pol*_*lau的帖子

Rails:挂钩进入ORM生成器

每当调用模型生成器时,我都想从gem运行生成器.

下列

require 'rails'

module Mygenerator
  class Railtie < Rails::Railtie

    config.app_generators.orm :my_generator

  end
end 
Run Code Online (Sandbox Code Playgroud)

正确调用我的生成器,但Rails的本机生成器不再运行.

我假设我可以运行本机生成器invoke,但这似乎过于复杂.那么ORM的所有其他发电机怎么样?

有没有更好的方法将我的发电机"附加"到现有发电机?


更新:

这自然有效 - 但我仍然希望有更清洁的东西:

module Rails
  module Generators
    class ModelGenerator < NamedBase

      def run_my_custom_generator
        invoke "my_generator:foo"
      end

    end
  end
end
Run Code Online (Sandbox Code Playgroud)

gem ruby-on-rails generator

7
推荐指数
1
解决办法
328
查看次数

Rails:在查看(和相关)文件更改时自动刷新浏览器

我的很多工作(在Rails中)实际上都围绕着视图,图像,SASS/CSS和Coffescript/Javascript文件,我希望有一个刷新浏览器的解决方案,每当我改变任何这种类型的文件.有点像自动测试或观察,但"设计"任务.

我看过watchr和fs-event,它们似乎提供相关功能并环顾网络,但我找不到任何现成的解决方案.我错过了什么?很难相信这还没有完成 - 工具显然存在.

假设这样的工具确实不存在,我想开始编写自己的解决方案.所以,如果你有什么建议可以考虑,在哪里看看有趣的项目等等 - 我也很感激.

更新 示例工作流程如下所示:

  1. 在终端启动"观察者应用程序"
  2. 如果Rails服务器没有运行,它就会启动
  3. 浏览器窗口自动指向rails服务器
  4. 我去改变视图中的一些HTML更改
  5. 浏览器会自动刷新
  6. 我更新了一些CSS
  7. 浏览器会自动刷新
  8. 我添加了一个新的JS文件
  9. 浏览器会自动刷新
  10. ...

干杯!

automation views ruby-on-rails

6
推荐指数
1
解决办法
5966
查看次数

Ruby:使用'-n'选项执行shell命令'echo'

我想从Ruby运行以下shell命令,它将一个字符串复制到剪贴板(在OS X上),'n'是在字符串引起的字符串断点之后抑制echo:

echo -n foobar | pbcopy
Run Code Online (Sandbox Code Playgroud)

- > 工作,很好,现在剪贴板包含"foobar"

我已尝试过以下内容,但所有这些都会将选项'-n'复制到剪贴板中:

%x[echo -n 'foobar' | pbcopy]
%x[echo -n foobar | pbcopy]
system "echo -n 'foobar' | pbcopy"
system "echo -n foobar | pbcopy"
exec 'echo -n "foobar" | pbcopy'
`echo -n "foobar" | pbcopy`
IO.popen "echo -n 'foobar' | pbcopy"
Run Code Online (Sandbox Code Playgroud)

实现这个目标的正确方法是什么?

ruby macos shell

6
推荐指数
2
解决办法
3073
查看次数

Mobile Safari:音频+缓存清单

我有一个小型的网络应用程序,只需点击几个按钮即可播放非常短的声音.它明确针对iOS(iPad)上的移动Safari.

在这里和其他地方阅读HTML5音频的几个"缺点"在这个背景下在移动Safari上尝试一些"黑客"和技巧后,我陷入了一种情况,Safari似乎只是(因为缺乏一个更好的词)破碎:

我可以在点击按钮A时播放声音A(它需要很长时间才能开始 - 我假设它正在下载[再次]?)之后,点击按钮B将立即再次播放声音A. 对于按钮C也是如此.在某些情况下,它会发出不同的声音,有时甚至是正确的声音.但主要是声音A.使用的格式是.aiff,现在是.m4a.

在自己编写了几个小版本之后,我决定使用Buzz库来处理声音加载/播放/等等.

有趣的是,他们的演示包括一个游戏,它几乎完全符合我的需要触发相同的错误行为.我甚至最终处于这样一种情况:任何标签中的移动Safari中的任何音频播放器都会播放Buzz演示游戏中的特定声音(!).

我希望缓存清单可以帮助克服苹果预加载限制并强制应用程序在离线模式下按下按钮后立即播放声音.但在确认整个应用程序已被缓存后,我无法在离线模式下播放/听到任何声音.

有没有人设法得到这样的东西以某种方式工作?( - 看过Apple如何处理某些事情,我不希望有太多回应,但......)


更新1:

此答案中的示例会产生相同的效果:如何在iPad上使用HTML5/Javascript合成音频


更新2:

更新iOS(以及Safari)似乎解决了音频错误.但是,缓存清单似乎不会影响音频文件.这些文件根本不可用.

删除缓存清单后,应用程序工作正常,但将其添加到"主屏幕"并重新加载它也会阻止音频播放.

mobile-safari ios html5-audio cache-manifest

6
推荐指数
1
解决办法
4442
查看次数

wicked_pdf + rails'资产管道+生产中的sass导入

我在开发中成功使用wicked_pdf和SASS.我包括一个单一的.scss文件,其中包含一些import其他的规则.sass.scss文件,通过这个帮手:

def wicked_pdf_stylesheet_link_tag(*sources)
  sources.collect { |source|
    "<style type='text/css'>#{Rails.application.assets.find_asset("#{source}.css").body}</style>"
  }.join("\n").gsub(/url\(['"](.+)['"]\)(.+)/,%[url("#{wicked_pdf_image_location("\\1")}")\\2]).html_safe
end
Run Code Online (Sandbox Code Playgroud)

但是切换到生产应用程序仍然会查找未找到的导入文件.

我已经添加了第二个清单文件,要在production.rb(config.assets.precompile += %w(pdf.css))中进行预编译,其中包含一个require用于获取上述.scss文件的规则.这个文件编译得很好,但似乎帮助程序没有在生产中选择正确的文件,仍然看起来加载导入的.sass文件.

有谁有经验如何解决这个问题?PDF创建需要绝对路径,这使得此任务更加困难.

production sass ruby-on-rails-3.1 asset-pipeline wicked-pdf

5
推荐指数
1
解决办法
4973
查看次数

PHP json_encode返回unescaped'

我在js中解析json编码对象时遇到了问题. JSON.parse(word_array);有错误Uncaught SyntaxError: Unexpected identifier

我的调查表明,对象word_array不会因为在PHP错误的形成存在:它有一个转义单引号'内,从而使JS把它作为字符串的结尾.

我下一步编码:

echo "<script>var word_array = '";
echo  json_encode($word_set);
echo "';\n";
Run Code Online (Sandbox Code Playgroud)

据我所知,json_encode应该逃避所有不受欢迎的特征,'但事实并非如此.可能是什么问题?

我的php版本:Version PHP: 5.3.13 并且$word_set是一组assoc.数组:

$word_set = array();
while($stmt->fetch())
{
  $word_set_tmp[] = array(
    'word' => $word, 
    'definition' => $def
  );
  array_push ($word_set,$word_set_tmp);
} 
Run Code Online (Sandbox Code Playgroud)

javascript php json

0
推荐指数
1
解决办法
239
查看次数