小编Mar*_*kus的帖子

已安装的导轨引擎中的命名路由

我正在制作一个小型轨道引擎,我这样安装:

mount BasicApp::Engine => "/app"
Run Code Online (Sandbox Code Playgroud)

使用这个答案,我已经验证了引擎中的所有路由都应该是:

但是 - 当我(在引擎内)链接到命名路由(在引擎内定义)时,我收到此错误

undefined local variable or method `new_post_path' for #<#<Class:0x000000065e0c08>:0x000000065d71d0>
Run Code Online (Sandbox Code Playgroud)

运行"rake route"清楚地验证"new_post"应该是一个命名路径,所以我不知道为什么Rails(3.1.0)无法解决它.欢迎任何帮助

我的config/route.rb(对于引擎)看起来像这样

BasicApp::Engine.routes.draw do
  resources :posts, :path => '' do
                resources :post_comments
                resources :post_images
        end
end
Run Code Online (Sandbox Code Playgroud)

我应该补充说它是和孤立的引擎.但是,像main_app.root_path这样的路径工作正常 - 而root_path却没有

mount ruby-on-rails named-routing rails-engines ruby-on-rails-3

36
推荐指数
2
解决办法
2万
查看次数

为什么`git checkout`不会自动执行`git submodule update --recursive`?

有人请帮我理解git中的子模块.我知道他们在互联网上受到了很多抨击但是因为我认为git开发人员是聪明人,所以当前行为必须有理由 - 也许是一种解决我的问题的方法.

所以,我有一个项目和一些子模块.该项目有不同的分支,如:

  • MyApp_version2
  • MyApp_version3
  • MyApp_version4
  • MyApp_liteversion
  • MyApp_development

我的子模块经常不会更新(可能每周一次)所以我很好,他们没有自动附加到子模块库的头部.

但是,当我查看旧分支时 - 因为我需要修复旧版软件中的错误 - 我还需要更新子模块.

为什么我需要这样做?

我希望git像svn一样工作.当我在我的主回购中投入工作时,我希望git能够按照以下思路思考:"好吧,他现在想要完成他的工作.我可以看到子模块目前处于修订版abc所以当他在将来的某个时候回到这个提交,他可能想要再次使用相同版本的子模块."

我不能看到一个案例,当你在主存储库中返回3年时,你希望子模块保持当前版本.但是,这个实施必须有理由,对吧?

我真的很想知道你是否有人知道这背后的想法,但无论如何我真的想要一个解决方案.有没有办法告诉git:"我想用这些子模块提交这项工作.如果我在某个时候回到这种状态,我希望子模块也能在正确的版本中检出."

澄清的例子

我的主存储库是一个需要使用SSL的应用程序,我找到了一个我作为子模块添加的SSL库(libSSL).

2010年10月31日,我在我的主存储库(2fd4e1)中创建了一个提交,而子模块指向了libSSL版本3(c67a2d).

时间过去了,libSSl更新到版本34,我调整我的代码,生活很好.

在2013年5月14日,我创建了一个新的提交(28fced)和子模块指向最新版本的libSSL(849ee1).

但是,如果我查看2fd4e1,即使原始提交是使用c67a2d创建的,我的子模块也将保持在849ee1.Git知道我使用c67a2d进行了原始提交,但我没有看到你怎么可能想要另一个子模块而不是创建原始提交的子模块.

git git-submodules

34
推荐指数
3
解决办法
1万
查看次数

在后台运行resque

我有一个工作轨道应用程序与resque队列系统工作得很好.但是,我缺乏一种实际上妖魔化resque工人的好方法.

我可以通过rake resque来启动它们:work QUEUE ="*"但我想这不是你应该让你的工人在前台运行的重点.出于某种原因,没有人似乎在解决这个问题.在官方resque github页面上声明你可以做这样的事情:

PIDFILE=./resque.pid BACKGROUND=yes QUEUE="*" rake resque:work
Run Code Online (Sandbox Code Playgroud)

好吧 - 它至少没有在这里进入背景.

daemon background ruby-on-rails resque ruby-on-rails-3

22
推荐指数
3
解决办法
2万
查看次数

宝石中未定义的局部变量或方法`acts_as_taggable'

我正在努力将插件转换为gem.在其中一个模型中,我使用的是acts_as_taggable_on,它看起来像这样

class BlogPost < ActiveRecord::Base
  acts_as_taggable
  ....
end
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我收到此错误:

 undefined local variable or method `acts_as_taggable' for #<Class:0x000000060799b8>
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪如下所示:

activerecord (3.1.0) lib/active_record/base.rb:1082:in `method_missing'
test_gem (0.1.0) app/models/blog_post.rb:28:in `<class:BlogPost>'
test_gem (0.1.0) app/models/blog_post.rb:2:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)

acts_as_taggable gem包含在我的gemspec文件中,并安装在系统上.

gem install acts-as-taggable-on
Successfully installed acts-as-taggable-on-2.1.1
1 gem installed
Installing ri documentation for acts-as-taggable-on-2.1.1...
Installing RDoc documentation for acts-as-taggable-on-2.1.1...
Run Code Online (Sandbox Code Playgroud)

我不知道会出现什么问题 - 请帮帮我

tags gem ruby-on-rails acts-as-taggable-on

11
推荐指数
2
解决办法
3557
查看次数

Rails引擎中的助手

我正在使用rails引擎,我对帮助器有问题.

显然这是一个已知的"问题",但那里没有很多解决方案.问题是我有一个我想要全局访问的AuthenticationHelper - 但它不起作用.

我已经读过你可以为你添加几行init.rb但它似乎没有任何效果.

知道什么是在引擎中提供应用程序的最佳方法吗?

编辑:修正了 - 只需将代码(来自链接)放入其中engine.rb.

ruby-on-rails helper rails-engines ruby-on-rails-3

8
推荐指数
1
解决办法
5189
查看次数

SQL:按优先级排序,但最后输入0

我有一个名为"priority"的(int)列.当我选择我的项目时,我希望最高优先级(最低编号)是第一个,最低优先级(最高编号)是最后一个.

但是,没有优先级的项目(当前优先级为0)应该在具有优先级的列之后由其他列列出.

换一种说法.如果我有这些优先事项:

 1 2 0 0 5 0 8 9
Run Code Online (Sandbox Code Playgroud)

我该如何对它们进行排序:

 1 2 5 8 9 0 0 0 
Run Code Online (Sandbox Code Playgroud)

我想我可以使用Int.max而不是0,但是0组成了一个很好的默认值,我会尽量保留.

sql sqlite sql-order-by android-sqlite

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

排球和位图缓存

我正在尝试显示包含大量(远程)图像的列表视图.我正试图用凌空来完成任务.

凌空有点奏效,但还不够好.在ImageLoader.get中,volley有以下代码:

    final String cacheKey = getCacheKey(requestUrl, maxWidth, maxHeight);

    // Try to look up the request in the cache of remote images.
    Bitmap cachedBitmap = mCache.getBitmap(cacheKey);
    if (cachedBitmap != null) {
        // Return the cached bitmap.
        ImageContainer container = new ImageContainer(cachedBitmap, requestUrl, null, null);
        imageListener.onResponse(container, true);
        return container;
    }
Run Code Online (Sandbox Code Playgroud)

但是,getCacheKey会生成如下所示的键:

/**
 * Creates a cache key for use with the L1 cache.
 * @param url The URL of the request.
 * @param maxWidth The max-width of the output.
 * @param …
Run Code Online (Sandbox Code Playgroud)

android caching bitmap android-volley

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

在片段之间共享代码

我有两个ListFragments需要共享一些代码.这是非常基本的,只需创建一个扩展ListFragment的抽象片段,然后让我的两个片段都扩展我的抽象片段.

但是,现在我需要第三个片段来使用我的抽象片段中的代码.但是,第三个片段不是ListFragment而是GridFragment.

有没有好办法解决这个问题?

java oop android design-patterns android-fragments

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

使用任务并行库进行调度

我必须处理大约200,000个对象(在桌面应用程序中),每个对象需要大约20毫秒来处理.为了加快速度,我想同时做到这一点.

对于测试我只是将每个对象放在一个单独的任务中,但由于工作量小,这只会产生很小的速度提升.所以我的第一个问题是:

是否有一种聪明(但不是太复杂)的方法来为这些对象找到最佳批量大小?我想我可以对一些本地测试是否最快将它们分组在10个,20个或100个对象中,但这似乎有点不理想.

其次(更重要的是):大多数对象只要在获得一些CPU时间时就应该被处理.但是,用户将始终查看10-20个对象.我希望始终能够将用户正在查看的对象放在队列的前面,以便提供流畅的用户体验.用户可能一直在导航,因此我觉得始终能够快速重新安排订单非常重要.(20 ms*20应该能够在大约0.4秒内处理).

有人可以用一个好的设计图案来帮助我处理这些对象吗?

c# design-patterns task-parallel-library

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

git如何知道要保留哪个版本的行?

我正在研究一个项目,该项目偶尔以稳定版本发布.当我们发布版本时,我们开始从当前的HEAD开发下一个版本.

然而,旧版本仍然受支持,放在它自己的分支上,并接收各种小修复和功能.当我将修复程序应用于旧的受支持版本时,我(几乎)总是将它们合并到当前版本中.

工作流程示例

  1. 我的应用程序称为"libSSL".
  2. 我发布了libSSL版本2并使用我发布的代码创建了一个单独的分支
  3. 我继续从libSSL版本2代码库开发libSSL版本3
  4. ....时间流逝.....
  5. 我在libSSL版本2中修复了一个严重的安全问题
  6. 我将更改合并到我即将发布的libSSL版本3的当前代码中

我的情况

当我在git full res image中遇到这种情况时,我只是将旧的支持版本中的一些更改合并到我的最新分支中 在此输入图像描述

这不是冲突,只是一些代码澄清.我改变了自上次发布以来某些时间点(可能是很久以前)的变量.

我的问题

git如何知道要使用哪个变量名?我猜git可以在进行更改时查找提交的时间戳(并选择最新的),但这似乎是一项非常昂贵的任务,并且它不会那样.

我通常不会对这些非冲突的变化三思而后行,但我能确定git会做正确的事情吗?这是一个有效的假设,还是应该更多地关注它们以避免用一些旧代码覆盖一些新代码?

我总是将旧分支合并到新分支中.

git merge conflict

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