轨道中的Cron解决方案众多且非常好.那不是我在这里挣扎的.
相反,我遇到的麻烦就是让用户创建他们自己的重复任务(比如提醒) - 特别是如何在数据库中建模和存储这些任务(一个好的用户界面也是非常重要的 - 如果有的话会很棒)代码那里).谷歌日历在这里是一个很好的例子(添加活动的UI,而不是整个日历)......他们应该能够在每天下午1点CST,或周一/周三/周五,或每周等等.无论cron解决方案是什么然后使用将需要轮询数据库以查看在那个时间需要发送哪些提醒等.
有人在rails中看到过这个好插件/宝石吗?似乎会有一些东西,但我还没有找到它.
谢谢!
我有一些带有强硬换行符的文字,如下所示:
This should all be on one line
since it's one sentence.
This is a new paragraph that
should be separate.
Run Code Online (Sandbox Code Playgroud)
我想删除单个换行符,但保留双换行符,如下所示:
This should all be on one line since it's one sentence.
This is a new paragraph that should be separate.
Run Code Online (Sandbox Code Playgroud)
有没有一个正则表达式来做到这一点?(或一些简单的方法)
到目前为止,这是我唯一有效的解决方案,但却感觉很自负.
txt = txt.gsub(/(\r\n|\n|\r)/,'[[[NEWLINE]]]')
txt = txt.gsub('[[[NEWLINE]]][[[NEWLINE]]]', "\n\n")
txt = txt.gsub('[[[NEWLINE]]]', " ")
Run Code Online (Sandbox Code Playgroud) 这让我最近的编程真的很令人沮丧。
我现在在阿根廷通过 SSH 连接到美国服务器。可以理解的是,这里的 ping 值有点高(平均大约 200 毫秒),所以当我通过 SSH 连接到服务器时,每次击键之间会有明显的延迟。这很好,很容易使用。
不太容易处理的是,大约每 5 分钟左右,SSH 就会完全挂起,大约需要 3-5 分钟才能返回提示。我知道服务器没有陷入困境,因为我可以在等待一个返回时轻松打开几个新连接(实际上这是我能够工作的唯一方法)。当 SSH 终于回来时,我可以看到它实际上一直在后台运行(大文件下载是测试这一点的好方法),但它只是没有更新我的屏幕。
有谁知道可能导致这种情况的原因?
其他一些事实:服务器是 Ubuntu,我正在连接 Mac OS X。我在 SSH 设置中打开了 keepalive。当我按住一个快速发送大量键的键(例如向左或向右箭头滚动)时,它最有可能挂起。事实上,我可以通过登录并按住“a”之类的任何键来可靠地重现挂起 - 在挂起之前它永远不会超过完整的“a”行。当我第一次进行国际连接时,这才刚刚开始,所以我假设它与那个(延迟?)有关,但不能肯定。
我在单一资源上有一个嵌套路由
map.resource :account, :controller => "users" do |page|
page.resources :feeds
end
Run Code Online (Sandbox Code Playgroud)
我正在尝试制作一个表单来添加Feed.我从这开始......
<% form_for @feed do |f| %>
undefined method `feeds_path' for #<ActionView::Base:0x2123174>
Run Code Online (Sandbox Code Playgroud)
所以我试试
<% form_for [current_user,@feed] do |f| %>
undefined method `user_feeds_path' for #<ActionView::Base:0x20b3e00>
Run Code Online (Sandbox Code Playgroud)
我想这是因为将它从"用户"重命名为"帐户"?所以我试过了
<% form_for account_feeds_path(@feed) do |f| %>
`@/account/feeds.%23%3Cfeed:0x22ea5c0%3E' is not allowed as an instance variable name
Run Code Online (Sandbox Code Playgroud)
不确定该错误意味着什么.所以我已经使用了这样做:
<% form_for @feed, :url=>{:action=>:create} do |f| %>
Run Code Online (Sandbox Code Playgroud)
这真的是最好的方式吗?换句话说,在这种情况下是否无法使用命名路由?
如果我的Rails environment.rb中有一个常量,例如......
SOME_CONSTANT = 3
Run Code Online (Sandbox Code Playgroud)
有可能以某种方式在我的capistrano deploy.rb中访问它吗?这似乎很简单,但我无法弄清楚如何.
TextMate中是否有命令重新缩进或格式化文件中的文本?
在粘贴代码块,删除块等以重新缩进文件后,我一直在IDE中使用它.
奖励积分,如果有一种方式可以缩进,转为:
has_many :users, :class_name => 'Users', :dependent => :destroy
has_many :comments, :class_name => 'Comments', :dependent => :destroy
Run Code Online (Sandbox Code Playgroud)
进入这个:
has_many :users, :class_name => 'Users', :dependent => :destroy
has_many :comments, :class_name => 'Comments', :dependent => :destroy
Run Code Online (Sandbox Code Playgroud)
但即使只是简单的重新格式化也会很棒.
不确定它是否重要但我在这里主要谈论Ruby-on-Rails应用程序.
我想为两个模型添加一个方法,所以我创建了一个这样的模块,并将它包含在两个模型中.
module UserReputation
def check_something
...
end
end
Run Code Online (Sandbox Code Playgroud)
这工作得很好.然后我希望在所有这些模型上将该方法称为:after_create.如果我手动将它添加到所有模型,它可以工作,但我想要聪明并将其包含在模块中,如下所示:
module UserReputation
after_create :check_something
def check_something
...
end
end
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有什么方法可以实现这一点并干掉after_create吗?
我有这样的Procfile:
web: bundle exec rails server -p $PORT
em: script/eventmachine
Run Code Online (Sandbox Code Playgroud)
该em过程使用start_server(端口ENV['PORT'])触发事件处理器,我的Web进程偶尔需要与之通信.
我的问题是Web进程如何知道与之通信的端口?如果我正确理解了heroku,它会在进程启动时为您分配一个随机端口(如果ps被终止或重新启动,它可以更改).谢谢!
我们正在编写一个与 OAuth2 api 集成的插件。
棘手的部分是我们不能像在大多数集成中那样对重定向 URI 进行硬编码,因为客户端可以在他们控制的任何域上安装这个插件(想想 Wordpress 插件),并且访问令牌需要重定向回他们的自定义 url。
我们看到您也可以state在 OAuth2 中设置参数。因此,我们可以将重定向 URI 硬编码为http://oursite.com/callback,并将状态设置为https://[CUSTOM_URL].
然后http://oursite.com/callback将额外重定向到自定义 URL,传递访问令牌。
然而,这似乎是一个安全漏洞,因为一旦用户对应用程序进行了身份验证,其他人可能会出现并导致它在state参数中使用他们自己的 url 重新进行身份验证。然后它会很高兴地重定向到他们的错误 url 并将访问令牌传递给他们。
那么人们如何在 redirect_uri 可以变化的情况下设置 OAuth2 集成呢?谢谢!
PS 我们想到的一种解决方案是仅state当重定向 uri 是我们控制的 url时才允许使用参数。然后我们可以创建另一个验证页面,再次提示用户:“您是否要允许https://customurl.com访问您的帐户...”。但我们认为可能有更好的方法。
如果您正在构建一个具有严格安全要求的网站并希望使用 Google 登录,您能否在允许登录继续之前确认用户对其帐户进行了某种二次验证设置?